我一直在尝试开发一个小部件,我已经进入了最后阶段,我只有一个障碍 - 如何在设备启动后再次将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);
由于某些我无法分析的原因,它不能正常工作或强行关闭......
答案 0 :(得分:0)
当小部件在启动后第一次启动时调用onUpdate()方法,这就是我通常在我的应用程序中设置PendingIntent的地方。
此外,我发现如果您在PendingIntent(在我的情况下,额外数据无法正确传递)中遇到问题,只需重新启动手机即可。