我有这个简单的小部件,当我点击它时,它应该打开我的活动,它可以工作,但它在重启后不起作用。我必须删除然后再次将小部件添加到我的主屏幕,因为当我点击小部件小部件时没有响应并且不打开我的活动。那么问题出在哪里?
代码:
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int N = appWidgetIds.length;
for(int i=0; i<N; i++){
int appWidgetId = appWidgetIds[i];
context.startService(new Intent(context, WidgetService.class));
Intent intent = new Intent(context, WidgetDialog.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
views.setOnClickPendingIntent(R.id.layout_widget, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
@Override
public void onEnabled(Context context){
context.startService(new Intent(context, WidgetService.class));
}
@Override
public void onDisabled(Context context){
context.stopService(new Intent(context, WidgetService.class));
}
答案 0 :(得分:3)
重新启动后,调用OnEnabled而不是onUpdate,因此将代码从onUpdate移动到单独的方法中,然后调用该方法从onEnabled更新所有小部件
答案 1 :(得分:0)
小部件继承的AppWidgetProvider在启动时从操作系统接收到onUpdate
时会调用ACTION_APPWIDGET_UPDATE
。
如果您在不调用onReceive
的情况下覆盖super.onReceive()
,则需要自己拦截此Intent。