2015-11-11 20 views
15

通知マネージャに異常なエラーが発生しました。Android NotificationManagerに「no small small icon」エラーが表示される

@Override 
public void onMessageReceived(String from, Bundle data) 
{ 
    Log.i(TAG, "IP : " + (String) data.get("ip")); 
    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
    Intent acceptNextIntent = new Intent(MainActivity.BROADCAST_KEY_ACCEPT); 
//  acceptNextIntent.putExtra("ip", (String) data.get("blah")); //add stuff here 
    PendingIntent acceptNextPendingIntent = PendingIntent.getBroadcast(this, 0, acceptNextIntent, 0); 

    Intent declineNextIntent = new Intent(MainActivity.BROADCAST_KEY_DECLINE); 
    PendingIntent declineNextPendingIntent = PendingIntent.getBroadcast(this, 0, declineNextIntent, 0); 

    NotificationCompat.Action acceptAction = new NotificationCompat.Action 
       .Builder(R.drawable.common_signin_btn_icon_disabled_focus_light, "Grant Request", acceptNextPendingIntent).build(); 

    NotificationCompat.Action declineAction = new NotificationCompat.Action 
       .Builder(R.drawable.common_signin_btn_icon_focus_dark, "Decline Request", declineNextPendingIntent).build(); 

    NotificationCompat.Builder notification = new NotificationCompat.Builder(this) 
       .setContentTitle("New Password Request From " + (String) data.get("ip")) 
       .addAction(acceptAction) 
       .addAction(declineAction); 

    notificationManager.notify(1, notification.build()); //ERROR HERE 

エラーメッセージ:

9.474 9327-9371/com.inh.amnesia_application I/MyGcmListenerService: IP : 128.239.213.39 
11-10 19:49:59.477 9327-9371/com.inh.amnesia_application E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1 
11-10 19:49:59.477 9327-9371/com.inh.amnesia_application E/AndroidRuntime: Process: com.inh.amnesia_application, PID: 9327 
11-10 19:49:59.477 9327-9371/com.inh.amnesia_application E/AndroidRuntime: java.lang.IllegalArgumentException: Invalid notification (no valid small icon): Notification(pri=0 contentView=com.inh.amnesia_application/0x1090085 vibrate=null sound=null defaults=0x0 flags=0x0 color=0x00000000 actions=2 vis=PRIVATE) 
11-10 19:49:59.477 9327-9371/com.inh.amnesia_application E/AndroidRuntime:  at android.app.NotificationManager.notify(NotificationManager.java:222) 
11-10 19:49:59.477 9327-9371/com.inh.amnesia_application E/AndroidRuntime:  at android.app.NotificationManager.notify(NotificationManager.java:194) 
11-10 19:49:59.477 9327-9371/com.inh.amnesia_application E/AndroidRuntime:  at com.inh.amnesia_application.MyGcmListenerService.onMessageReceived(MyGcmListenerService.java:65) 
11-10 19:49:59.477 9327-9371/com.inh.amnesia_application E/AndroidRuntime:  at com.google.android.gms.gcm.GcmListenerService.zzt(Unknown Source) 
11-10 19:49:59.477 9327-9371/com.inh.amnesia_application E/AndroidRuntime:  at com.google.android.gms.gcm.GcmListenerService.zzk(Unknown Source) 
11-10 19:49:59.477 9327-9371/com.inh.amnesia_application E/AndroidRuntime:  at com.google.android.gms.gcm.GcmListenerService.zza(Unknown Source) 
11-10 19:49:59.477 9327-9371/com.inh.amnesia_application E/AndroidRuntime:  at com.google.android.gms.gcm.GcmListenerService$1.run(Unknown Source) 
11-10 19:49:59.477 9327-9371/com.inh.amnesia_application E/AndroidRuntime:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
11-10 19:49:59.477 9327-9371/com.inh.amnesia_application E/AndroidRuntime:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
11-10 19:49:59.477 9327-9371/com.inh.amnesia_application E/AndroidRuntime:  at java.lang.Thread.run(Thread.java:818) 

これは、私がアクセスしようとしていたアイコンが存在しないことを意味するのでしょうか?私はこのエラーをどのように解釈するのか不明で、このエラーメッセージを検索しても何も得られません。

答えて

16

実際には、プッシュ通知のアイコンを設定していません。あなたの通知に.setSmallIcon(R.drawable.your_icon)を追加してください。

NotificationCompat.Builder notification = new NotificationCompat.Builder(this) 
      .setContentTitle("New Password Request From " + (String) data.get("ip")) 
      .setSmallIcon(R.drawable.your_icon) 
      .addAction(acceptAction) 
      .addAction(declineAction); 
+1

ソースコード[https://android.googlesource.com/platform/frameworks/base.git/+/master/core/java/android/app/NotificationManager.java#306]が見つかりました。 api> lolipopにはエラーがあるようです。 – einverne

+0

LEDを設定するために通知を使用してこのエラーが発生しました。この場合、アイコンは表示されないので無関係でなければなりません。 – Michael

4

アンドロイドNotificationManager Source Code

if (mContext.getApplicationInfo().targetSdkVersion > Build.VERSION_CODES.LOLLIPOP_MR1) { 
    if (notification.getSmallIcon() == null) { 
     throw new IllegalArgumentException("Invalid notification (no valid small icon): " 
       + notification); 
    } 
} 

によると、このエラーは、あなたがターゲットAPIを設定するとき> LOLLIPOP_MR1(22)と通知が小さなアイコンを持っていないが起こりました。

関連する問題