如何在设备启动后设置widget的PendingIntent

时间:2011-12-04 15:55:43

标签: android android-widget

我一直在尝试开发一个小部件,我已经进入了最后阶段,我只有一个障碍 - 如何在设备启动后再次将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);

由于某些我无法分析的原因,它不能正常工作或强行关闭......

1 个答案:

答案 0 :(得分:0)

当小部件在启动后第一次启动时调用onUpdate()方法,这就是我通常在我的应用程序中设置PendingIntent的地方。

此外,我发现如果您在PendingIntent(在我的情况下,额外数据无法正确传递)中遇到问题,只需重新启动手机即可。