2017-03-08 49 views
0

我試圖創建的PendingIntent包含一個通知的廣播接收器,我莫名其妙地得到一個空的PendingIntent返回。它沒有任何意義,因爲只有一個指定的情況會返回一個空的PendingIntent,並且如果PendingIntent.FLAG_NO_CREATE作爲標誌選項傳遞。安卓:空的PendingIntent

這是我的PendingIntent代碼..在調試器pendIntent = NULL之後。

Intent notificationIntent = new Intent(context, LocalPushBroadcastReceiver.class); 
    notificationIntent.putExtra(LocalPushBroadcastReceiver.NOTIFICATION_ID_ARG, pushId); 
    notificationIntent.putExtra(LocalPushBroadcastReceiver.NOTIFICATION_ARG, notification); 
    notificationIntent.setData(Uri.parse("LocalPush:" + pushId + notification.toString())); 
    PendingIntent pendIntent = PendingIntent.getBroadcast(context, 0, notificationIntent, 0); 

我已經嘗試了很多其他標誌/選項。我試着從onClick/onStart /到處調用這段代碼。我使用的是最新版本的Android Studio,並且正在使用最新的sdk版本25進行編譯。LocalPushBroadcastReceiver在清單中正確定義。

這很奇怪,因爲我有這樣的完全相同的代碼在其他應用中的另一臺機器上工作,我想不出我缺少什麼配置。我會很感激任何想法。謝謝!

+0

什麼是堆棧跟蹤呢? – pskink

+0

Stacktrace只是嘗試執行pendIntent.toString()時的NPE。 –

+0

還上下文是我的應用程序類,但這似乎並不重要,因爲我試圖從活動上下文/ getApplicationContext()/等 –

回答

0

所以看起來像我的問題,曾專門與我試圖將作爲參數傳遞到的PendingIntent通知的大小有關。海事組織的日誌記錄/錯誤處理在這裏可能會好一點,但基本上,因爲我在我的通知中附加了一個大的位圖作爲BigPictureStyle,所以Parcelable最終變得太大,需要以不同的方式處理。

TL;博士

我總是避免該通知作爲Parcelable,而是通過我用的時候我後來收到我的廣播,以獲得適當的通知的ID。感謝pskink幫助調試。

+1

請接受你的回答。這將從未回答的問題列表中刪除此問題。謝謝。 –