1
我一直在試圖開發一個小部件,我在我的最後階段,我只有一個障礙 - 如何在設備啓動後再次將一個PendingIntent分配給小部件?如何在設備啓動後設置小部件的PendingIntent
我有接收BOOT_COMPLETED廣播一個BroadcastReceiver:
public static final String TAG = "BootReceiver";
private Context c;
@Override
public void onReceive(Context c, Intent i) {
Log.i(TAG, "Received BOOT_COMPLETED broadcast!");
Intent readPrefsAfterBoot = new Intent(c, my widget class);
readPrefsAfterBoot.setAction(* my custom action *);
c.sendBroadcast(readPrefsAfterBoot);
}
我的AppWidgetProvider接收的自定義操作是這樣的:
** reading saved data from SharedPreferences **
RemoteViews rv = new RemoteViews(context.getPackageName(), my widget layout);
AppWidgetManager awm = AppWidgetManager.getInstance(context);
Intent intent = new Intent(context,my widget class);
intent.setAction(* another custom action *);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
rv.setOnClickPendingIntent(my button, pi);
awm.updateAppWidget(appWidgetIds[i], rv);
它要麼不工作或強制關閉了一些原因,我無法分析...
嘗試使用日誌進行調試,如果收到廣播並且調用了intent。然後用logcat重啓手機。 – Warpzit
在Eclipse中使用'adb logcat',DDMS或DDMS透視圖查看LogCat並查看與「強制關閉」相關的堆棧跟蹤。 – CommonsWare
這需要我一些時間,因爲我的屏幕上安裝了很多應用程序和很多小部件......但是在此期間,有沒有可能是我的小部件的類中使用的上下文存在問題? – Netanel