AppWidget应用(二)---PendingIntent 之 getActivity
通过AppWidget应用(一)的介绍,我们已经知道如何创建一个在主界面上显示一个appWidget窗口,但这并不是我们的目的,我们需要做到程序与用户之间进行交互;下面来介绍下如何通过appWidget启动一个Activity。
一、在appWidget的布局文件中添加一个按钮
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TextView
android:id="@+id/txtapp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:text="test" >
</TextView>
<Button
android:id="@+id/btnSend"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Send" >
</Button>
</LinearLayout>
二、在appWidget上为按钮添加监听函数
@Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { // TODO Auto-generated method stub //遍历本程序启动的appWidget for (int i = 0; i < appWidgetIds.length; i++) { System.out.println("-----------appWidgetIds[] = " + appWidgetIds[i]); // 创建一个Intent对象 Intent intent = new Intent(context, targetActivity.class); // 启动一个Activity // 创建一个PendingIntent对象 打开一个Activity PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.appwidgetlayout); // 为按钮绑定监听器 remoteViews.setOnClickPendingIntent(R.id.btnSend, pendingIntent); // 更新App appWidgetManager.updateAppWidget(appWidgetIds[i], remoteViews); } super.onUpdate(context, appWidgetManager, appWidgetIds); }
targetActivity 就是点击按钮时要启动的Activity
按照AppWidget应用(一)中的方法启动后的appWidget效果如图:
最后是代码的地址: