如何从android主屏幕小部件启动活动

时间:2010-04-24 22:54:05

标签: android android-activity android-widget android-appwidget

我正在拼命想要如何实现主屏幕小部件。现在,我(终于)能够在我的小部件上获得一个按钮,响应按钮按下在清单中设置一个意图过滤器。

但是,我不能为我的生活找出按下按钮时如何启动活动。基本上,这是我的代码:

 @Override 
 public void onReceive(Context context, Intent intent) 
 { 
      super.onReceive(context, intent); 
      if(intent.getAction().equals("com.bic.search.searchWidget.CLICK")) 
      { 
           Toast.makeText(context, "It works!!", Toast.LENGTH_SHORT).show(); 
      } 
 } 

但我真正想做的是开始一项新活动,而不是显示祝酒消息。我知道它与未决意图有关,但我无法弄清楚如何让它工作。

任何帮助和示例代码将不胜感激。非常感谢谁回答这个问题!

2 个答案:

答案 0 :(得分:13)

好吧,您的应用小部件应该已经绑定了按钮PendingIntent。而不是触发PendingIntent的{​​{1}},而是BroadcastReceiver启动PendingIntent

答案 1 :(得分:0)

您可以使用此代码来解决您的问题。

public class Widget extends AppWidgetProvider {

        // ...

        public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {

            for(int i = 0; i < appWidgetIds.length; i++){

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

                Intent startActivityIntent = new Intent(context, myActivity.class);
                PendingIntent startActivityPendingIntent = PendingIntent.getActivity(context, 0, startActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT);
                widget.setPendingIntentTemplate(R.id.list_view, startActivityPendingIntent);

                appWidgetManager.updateAppWidget(appWidgetIds[i], widget);

                // ...
        }
    }

    public class WidgetAdapter implements RemoteViewsService.RemoteViewsFactory {

        // ...

        @Override
        public RemoteViews getViewAt(int position) {

        RemoteViews widgetRow = new RemoteViews(context.getPackageName(), R.layout.widget_row);

            Intent fillInIntent = new Intent();
            fillInIntent.putExtra(Widget.EXTRA_LIST_VIEW_ROW_NUMBER, position);
            widgetRow.setOnClickFillInIntent(R.id.list_view_row, fillInIntent);

            // ...

            return row;
        }
    }

希望这有帮助!