通过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>
- <span style="background-color: rgb(255, 255, 255);"><span style="color:#ff0000;"> <Button
- android:id="@+id/btnSend"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="Send" >
- </Button></span></span>
- </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效果如图:
最后是代码的地址:
原文:http://blog.csdn.net/deng0zhaotai/article/details/10401489