簡體   English   中英

Java / Android:將Intent Extras從BroadcastReceiver傳遞給Activity

[英]Java/Android: passing Intent extras from BroadcastReceiver to Activity

更新: eclipse或代碼都沒有引起這些麻煩。 Genymotion做到了。

也許我的方法是完全錯誤的,因為似乎沒有其他人遇到這個問題-如果是這樣,我願意嘗試不同的方法而不是解決此問題:我有以下設置。

BroadcastReceiver正在監聽App的安裝。 每當安裝新的應用程序時,我都會使用基於正常Intent的PendingIntent創建一個通知,方法是

PendingIntent pIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);

在創建PendingIntent之前,我在常規Intent中添加了一些附加內容,這些附加內容將被傳遞給在單擊通知時觸發的Activity。

notificationIntent.putExtra("AppLabel", appLabel); // the installed App
notificationIntent.putStringArrayListExtra("Group", group); // the corresponding group
notificationIntent.putStringArrayListExtra("List", list); // the corresponding list

現在,這可以正常工作並顯示通知。 調試我可以看到,創建pIntent時,所有附加功能都已正確設置並通過。 但是,當我嘗試閱讀打開的“活動”中的其他內容時,麻煩開始了。 我已經必須基於此處的答案構建解決方法,以閱讀其他內容:

Bundle bundle = getIntent().getExtras();
for (String key : bundle.keySet()) {
  Object value = bundle.get(key);
  if (key.equals("Group")) {
   group = (ArrayList<String>) value;
  } ... }

這也曾有一段時間,但現在我完全迷路了。 由於某些原因,ArrayList附加內容為空[]-appLabel仍正確設置。

現在真正的麻煩是,我不確定這是否與代碼相關,還是日食問題。

我觀察到,在進行一些部署之后,bundle.keySet()返回了與我在putExtra調用中設置的鍵不同的鍵。 搜索時,我也經常遇到OutOfSync錯誤。 關於鍵的名稱,刷新確實有幫助,但是值仍然丟失。

對於閱讀過本文的任何人:非常感謝! 現在-有人知道了,這是怎么回事? 有誰知道類似的月食問題? 還是代碼中有錯誤? 也歡迎任何其他設計建議。 如果可以排除一些錯誤源,我將很高興...預先感謝

更新:清單信息:啟動的通知活動的定義如下:

<activity
 android:theme="@style/Theme.AppCompat.CompactMenu.Dialog"
 android:label="Notification Receiver"
 android:excludeFromRecents="true">
</activity>

但是MainActivity只有一個名稱和標簽。 除了:

<uses-sdk
android:minSdkVersion="18"
android:targetSdkVersion="19" />

我剛剛在兩點添加了一個SystemOut:一是由BCR創建意圖時,一是由Activity讀取意圖時。

BroadcastReceiver.getExtras.keyset returns [a,b,c,d]

Activity.getExtras.keyset returns the keys [x,y,z]

在所有項目和所有工作區中搜索時,找不到x,y,z ...在幾天前的以前版本中使用過,所以eclipse似乎存儲了一些無效的舊數據?

好吧,看起來所有技術資料和所有outOfSync都很討厭,但最終無關緊要。 它只是涵蓋了一個非常瑣碎的錯誤。 可以在此處找到答案: 除了第一個意圖外,所有意圖都收到了不正確的附加內容

至少對於當前的實現,這看起來像是解決了問題-當然除了同步問題之外,但並沒有再次發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM