java.lang.NoSuchMethodError:android.app.Notification $ Builder.setColor

时间:2015-01-17 15:48:17

标签: android notifications android-notifications

final Notification.Builder mBuilder = new Notification.Builder(this)
                .setSmallIcon(R.drawable.bwf_logo)
                .setColor(getResources().getColor(android.R.color.white)) // **exception raised at this line**
                .setContentTitle("Title")
                .setStyle(
                        new Notification.BigTextStyle()
                                .bigText(notificationMessage))
                .setAutoCancel(true)
                .setSound(
                        RingtoneManager
                                .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
                .setVibrate(vibrate).setContentText(notificationMessage);

        mBuilder.setContentIntent(contentIntent);
        mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());

01-17 21:14:44.450: W/dalvikvm(27472): threadid=38: thread exiting with uncaught exception (group=0x41004318)
01-17 21:14:44.450: E/AndroidRuntime(27472): FATAL EXCEPTION: IntentService[GCMIntentService]
01-17 21:14:44.450: E/AndroidRuntime(27472): java.lang.NoSuchMethodError: android.app.Notification$Builder.setColor
01-17 21:14:44.450: E/AndroidRuntime(27472):    at com.bwf.betswithfriends.GCMIntentService.gcmAlternateStakeNotification(GCMIntentService.java:109)
01-17 21:14:44.450: E/AndroidRuntime(27472):    at com.bwf.betswithfriends.GCMIntentService.onHandleIntent(GCMIntentService.java:51)
01-17 21:14:44.450: E/AndroidRuntime(27472):    at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
01-17 21:14:44.450: E/AndroidRuntime(27472):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-17 21:14:44.450: E/AndroidRuntime(27472):    at android.os.Looper.loop(Looper.java:137)
01-17 21:14:44.450: E/AndroidRuntime(27472):    at android.os.HandlerThread.run(HandlerThread.java:60)
01-17 21:14:44.560: D/dalvikvm(27472): GC_CONCURRENT freed 3520K, 16% free 22535K/26695K, paused 14ms+24ms, total 131ms

支持库是最新的: -

enter image description here

1 个答案:

答案 0 :(得分:11)

setColor() is new to API Level 21并且无法在较旧的设备上使用。

强烈建议您切换到NotificationCompat.Builder,因为它可以让您拨打setColor(),并且只会在旧设备上跳过该工作。