2017-05-29 40 views
0

我有一些處理remoteMessage的NullPointer異常的問題。Firebase remoteMessage getData正確NullPointer處理

我試圖做簡單的檢查:

Map<String, String> data = remoteMessage.getData(); 

if(data != null) { 
     Log.d(TAG, remoteMessage.getData().get("lat")); 
     Log.d(TAG, remoteMessage.getData().get("lng")); 
    } 

我也更努力:

if(remoteMessage.getData().get("lat") != null) { 
     Log.d(TAG, remoteMessage.getData().get("lat")); 
    } 

但它總是空指針崩潰:

05-29 10:22:33.112 21028-24256/com.coderspeak.smog_app E/AndroidRuntime: FATAL EXCEPTION: pool-12-thread-1 
                    Process: com.coderspeak.smog_app, PID: 21028 
                    java.lang.NullPointerException: println needs a message 
                     at android.util.Log.println_native(Native Method) 
                     at android.util.Log.d(Log.java:139) 
                     at com.coderspeak.smog_app.services.fcm.AppFirebaseMessagingService.onMessageReceived(AppFirebaseMessagingService.java:50) 
                     at com.google.firebase.messaging.FirebaseMessagingService.zzl(Unknown Source) 
                     at com.google.firebase.messaging.FirebaseMessagingService.zzJ(Unknown Source) 
                     at com.google.firebase.messaging.FirebaseMessagingService.handleIntent(Unknown Source) 
                     at com.google.firebase.iid.zzb$1.run(Unknown Source) 
                     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
                     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 

我該怎麼辦這適當的檢查?

+0

Log.d(TAG,remoteMessage.getData()。get(「lat」)+「」); –

+0

你可以嘗試打印整個'data'嗎?像這樣,'Log.d(TAG,「Message data payload:」+ remoteMessage.getData());' –

回答

0

您是否試過這種方法?

if (remoteMessage != null && 
    remoteMessage.getData() != null) { 
    String yourMessage = remoteMessage.getData().get("lat")); 

    if (yourMessage != null) { 
     Log.d(TAG, yourMessage); 
    } 
} 
+0

remoteMessage.getData()。get(「lat」)總是給出崩潰 – Konrad

+0

getData )方法調用是一個Map實例還是一個自定義類型?也許NPE發生在get()方法內部。 –