我有一個widget
,它設置了一些pendingIntents
。只要我在主屏幕上只有一個小工具,所有工作都很好。嘗試添加第2個主屏幕小部件後PendingIntents不會觸發
目前,我決定我將限制用戶只有一個主屏幕小部件。如果已經在使用中,則ConfigureActivity
給用戶一個alertDialog框,告訴他們他們不能再添加第二個,然後設置setResult(RESULT_CANCELED, null)
然後完成()。
這工作得很好,並保持用戶無法設置任何進一步的主屏幕小部件,但對於已經在位的大多數我的pendingIntents
不會觸發。 Logcat告訴我「不能發送待定意圖:」
每個pendingIntents設置爲啓動一個用於更新小部件的服務。如果我刪除小部件並重置它,它會再次正常工作,直到我嘗試添加第二個小部件。在這一點上,我有點困惑。任何人有任何想法,爲什麼開始添加第二個小部件,但沒有完成它會取消我以前的pendingIntents?
重要的是,pendingIntents設置爲FLAG_CANCEL_CURRENT
。
以下是用於設置我的intent
和pendingIntents
的代碼。
Intent intentDialog = new Intent(getBaseContext(), ScheduleActionsActivity.class);
intentDialog.putExtra("Action", ACTION_ENTER_SCHEDULE);
intentDialog.setAction("abc.hwRowOne");
intentDialog.putExtra("scheduleId", sch.getId());
intentDialog.putExtra("scheduleDescription", sch.getDescription());
PendingIntent pendingIntentDialog1 = PendingIntent.getActivity(getBaseContext(), 0, intentDialog, PendingIntent.FLAG_CANCEL_CURRENT);
views.setOnClickPendingIntent(R.id.hwRowOne, pendingIntentDialog1);
所在行intentDialog.setAction()
變化是小部件的每一行唯一的,所以我認爲這是使我的PendingIntent獨特的爲好。
昨天晚上發佈我的問題後,我看到了這個答案,但我不知道爲什麼/如何工作,我不確定把它放在我的區域。它似乎爲每個意圖設置了一個獨特的數據,但這正是我認爲我的.setAction()
正在做的事情。 Multiple Instances Of Widget Only Updating Last widget
所以要回答你的問題,不,我沒有在我的意圖中使用appWidgetId,我只需要將它作爲putExtra()
然後在intentDialog
上傳遞?
您是否正確使用WidgetID來指示PendingIntent需要更新哪個小部件?無論何時您有多個小部件從服務更新它,您都需要將正確的小部件ID傳遞給它。 – MKJParekh 2012-07-12 05:50:36