PendingIntent:
创建方法:
getActivity(Context, int, Intent, int),
getBroadcast(Context, int, Intent, int),
getService(Context, int, Intent, int);
RemoteViews的作用:
1.该对象表示了一系列的View对象。
2.RemoteViews所表示的对象运行在另外的进程中。
此项目接着http://yinger-fei.iteye.com/admin/blogs/1173658的创建小部件项目开始写。
这次程序功能:在App Widget中添加Button并实现监听。
1.向App Widget中添加Button
<Button android:id="@+id/widgetButtonId" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="測試用按鈕" />
2.为Button绑定处理器
注意:由于App Widget和应用程序运行在不同的进程中(App Widget中的view运行在Home Screen进程中),所以无法按之前惯用的方法绑定监听器。
remoteViews.setOnClickPendingIntent(R.id.widgetButtonId,pendingIntent);
在extends AppWidgetProvider的类中。实现onUpdate方法
@Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { //ystem.out.println("onupdate"); for(int i=0;i<appWidgetIds.length;i++){ System.out.println(appWidgetIds[i]); //创建一个Intent对象 Intent intent=new Intent(context,TargetActivity.class); //创建一个PendingIntent PendingIntent pendingIntent=PendingIntent.getActivity(context, 0, intent, 0); RemoteViews remoteViews=new RemoteViews(context.getPackageName(),R.layout.example_appwidget); //为按钮绑定事件处理器 //参数含义 1 被绑定控件的id 2 事件发生时,那个pendingintent被执行 remoteViews.setOnClickPendingIntent(R.id.widgetButtonId,pendingIntent); //更新appwidget //参数含义 1 被更新appwidgetid appWidgetManager.updateAppWidget(appWidgetIds[i], remoteViews); }
这里显示的效果就是点击button时,跳转到另外一个Activity。使用的是getActivity();