intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,AppWidgetManager.INVALID_APPWIDGET_ID);

时间:2014-02-13 23:10:22

标签: android android-widget widget appwidgetprovider

我无法获得onReceive()中点击的小部件的ID。总是返回0.这是我的代码:

@Override
    public void onReceive(Context context, Intent intent) {

        if (intent.getAction().equals(WIDGET_BUTTON)) {
            int widgetId = intent.getIntExtra( AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); 

            log("WID ID" + widgetId);

我从Android开发者文档中获取代码,我不知道它为什么不起作用..


回答:

我想念:

AppWidgetManager mgr = AppWidgetManager.getInstance(context);

所以我的代码是这样的:

@Override
public void onReceive(Context context, Intent intent) {

    AppWidgetManager mgr = AppWidgetManager.getInstance(context);
    RemoteViews views = new RemoteViews(context.getPackageName(),
            R.layout.widget_main);




    if (intent.getAction().equals(WIDGET_BUTTON)) {
        Bundle extras = intent.getExtras();     
        int widgetId = 0;

        if (extras != null && extras.containsKey(AppWidgetManager.EXTRA_APPWIDGET_ID)) 
            widgetId = intent.getIntExtra(mgr.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); 
            log("1 - WID ID" + widgetId);

1 个答案:

答案 0 :(得分:0)

doc表示INVALID_APPWIDGET_ID == 0,因此您正在接收没有额外EXTRA_APPWIDGET_ID的Intents。

您在创建意图时是否添加了额外内容?