2015-11-11 7 views
15

मुझे अधिसूचना प्रबंधक के साथ एक अजीब त्रुटि है।एंड्रॉइड अधिसूचना प्रबंधक मुझे "कोई मान्य छोटा आइकन" त्रुटि नहीं दे रहा है

@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) मिला है, यह लगता है केवल लक्ष्य एपीआई> लॉलीपॉप में त्रुटि होगी। – einverne

+0

मुझे एल ई डी सेट करने के लिए अधिसूचना का उपयोग करके यह त्रुटि मिल रही है, इस स्थिति में आइकन अप्रासंगिक होना चाहिए क्योंकि यह प्रदर्शित नहीं होता है ... – 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); 
    } 
} 

को यह त्रुटि केवल हुआ जब आप लक्ष्य एपीआई> LOLLIPOP_MR1 (22) और सूचना सेट एक छोटा सा आइकन नहीं है अनुसार।

संबंधित मुद्दे