WidgetProvider在onReceive中找不到按钮点击发送的意图附加内容

And*_*der 4 android widget broadcastreceiver android-intent

我试图检测何时单击小部件按钮但没有任何Intent额外的东西出现在onReceive方法中.

onReceive每次点击都会调用,但我的所有内容都不会Intent显示出来.

我的代码如下:我只在更新时挂钩切换按钮,所以不确定这是否正确.null尽管我设置了这个,但没有一个额外的东西出现和类别.

onUpdate(上下文上下文等):

RemoteViews remoteViews = new RemoteViews(context.getPackageName(), 
                                R.layout.my_widget);

Intent buttonIntent = new Intent(context, MyWidgetProviderClass.class);
buttonIntent.setAction(ACTION_WIDGET_RECEIVER);
buttonIntent.putExtra("BUTTON_CLICKED", "buttonClick");
buttonIntent.putExtra("BUTTON",899);

PendingIntent muPendingIntent = PendingIntent.getBroadcast(context, 0, 
                                        buttonIntent, 
                                        PendingIntent.FLAG_CANCEL_CURRENT);
buttonIntent.addCategory("buttonclick");
remoteViews.setOnClickPendingIntent(R.id.ToggleImageButton, myPendingIntent);
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
Run Code Online (Sandbox Code Playgroud)

的onReceive():

intent.getIntExtra("BUTTON",-1);    ---> 1
intent.getCategories()   --- > null
Run Code Online (Sandbox Code Playgroud)

Com*_*are 5

尝试FLAG_UPDATE_CURRENT而不是FLAG_CANCEL_CURRENT.

此外,您的代码可能有一个错字:您有muPendingIntent而不是myPendingIntent.

另外,请不要将其buttonclick用作类别.请命名它(例如com.something.whatever.buttonclick),或删除它,因为我不知道你为什么需要它.

这是一个示例项目,演示了一个应用程序窗口小部件,在单击时,会触发更新自身,带有一个额外的(用于提供应用程序窗口小部件ID).