1

我有一个带有小部件的应用程序。我想用小部件启动应用程序,但启动后我的小部件没有响应点击。只有在正常启动应用程序(并再次关闭它)后,小部件才会开始响应对小部件本身的点击。

这就是我使用 AppWidgetProvider 设置小部件的方式:

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{   final int ids = appWidgetIds.length;

    for(int i=0;i<ids;i++)
    {   int appWidgetId = appWidgetIds[i];

        Intent intent = new Intent(context, TestReceiver.class);            
        intent.setAction(ACTION_WIDGET_RECEIVER);
        intent.setClassName(TestReceiver.class.getPackage().getName(), TestReceiver.class.getName());

        PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);

        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);

        views.setOnClickPendingIntent(R.id.widget_root, pi);
        views.setTextViewText(R.id.widgetclock, "Loading...");

        appWidgetManager.updateAppWidget(appWidgetId, views);
    }
}

我必须更改什么,以便我的应用程序在启动后注册对小部件的点击,而不必先启动它至少一次?

4

1 回答 1

0

尝试创建一个 BroadcastReceiver 来响应 BOOT 广播并重置小部件的 PendingIntent:我不相信小部件 PendingIntents 在设备重启后仍然存在。

于 2012-04-18T20:55:43.053 回答