一 接收来自App Widget的广播
1.在AndroidManifest.xml为AppWidgetProvider注册新的intente-filter;
2.使用getBroadcast()创建一个PendingIntent;
3.为App Widget中的控件注册处理器;
4.在onReceive方法中接收广播;
a.布局文件中有个Button
<Button
android:id="@+id/widgetButtonId"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="測試用按鈕"
/>
b.在extends AppWidgetProvider实现类中定义了一个变量
private static final String state="my_state";
c.在AndroidManifest.xml注册
<receiver android:name="ExampleAppWidgetProvider">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<intent-filter >
<action android:name="my_state"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/example_appwidget_info" />
</receiver>
d.复写onUpdate方法发送广播
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
Intent intent=new Intent();
intent.setAction(state);
//发送广播
PendingIntent pendingIntent=PendingIntent.getBroadcast(context, 0, intent, 0);
RemoteViews remoteViews=new RemoteViews(context.getPackageName(), R.layout.example_appwidget);
remoteViews.setOnClickPendingIntent(R.id.widgetButtonId, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
d.复写onReceive方法接收广播
@Override
public void onReceive(Context context, Intent intent) {
String action=intent.getAction();
if(state.equals(action)){
System.out.println("onReceive--"+action);
}else{
super.onReceive(context, intent);
}
}
当我们点击button时,后台打印出数据:
二 更新控件状态
1.代码同上,只是在布局文件中加入一个textview
<TextView
android:id="@+id/widgetTextId"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="firstWidgetText"
android:background="#000000"
/>
2.onUpdate代码同上,只是onReveice方法不同
@Override
public void onReceive(Context context, Intent intent) {
String action=intent.getAction();
if(state.equals(action)){
RemoteViews remoteViews=new RemoteViews(context.getPackageName(), R.layout.example_appwidget);
remoteViews.setTextViewText(R.id.widgetTextId, "xixi");
AppWidgetManager appWidgetManager=AppWidgetManager.getInstance(context);
ComponentName componentName=new ComponentName(context,ExampleAppWidgetProvider.class);
appWidgetManager.updateAppWidget(componentName, remoteViews);
}else{
super.onReceive(context, intent);
}
}
程序运行效果就是,点击button文字改变为“xixi”.
- 大小: 1.5 KB
- 大小: 25.8 KB
分享到:
相关推荐
App Widget 的概念 一个简单的App Widget例子 PendingIntent的使用 RemoteViews的使用 接收来自App Widget的广播 更新App Widget的控件状态
AppWidget桌面小控件
NULL 博文链接:https://hanllove001.iteye.com/blog/1185506
此demo实现 android 桌面控件appwidget
使用appWidget启动一个Activity
在src的包目录下新建一个java文件,该文件为实现所需建立的appwidget全部功能,其中比较重要的功能是接收广播消息来更新appwidget的内容。该java文件时一个类,继承AppWidgetProvider这个类,复写其中的onDeleted,...
android安卓app开发之widget界面控件使用教程.zip
AppWidget 即桌面小部件,也叫桌面控件,就是能直接显示在Android系统桌面上的小程序,先看图: 图中我用黄色箭头指示的即为AppWidget,一些用户使用比较频繁的程序,可以做成AppWidget,这样能方便地使用。典型...
AppWidget的学习Demo,创建了一个简单的桌面widget小窗口,并实现与之互动的功能。
android app widget 使用listview 源码
这是一个在应用中创建属于应用的AppWidget的小demo,功能很简单,希望帮助了解AppWidget的创建流程。
Android -- AppWidget源码
蓝牙BLE4.0接收广播App,手机模拟BLE设备的话可以通过我的另一个下载——手机模拟BLE设备发送广播App. 这两个App可以完成2台Android手机,通过BLE4.0进行通信,可以发送和接收数据。 其中一台Android手机T模拟发出...
android的appwidget全面解析及启动运行过程。
Android App Widget 开发,demo实现了一个简单的音乐播放器,详见http://blog.csdn.net/huaxun66/article/details/77880376
本例以在桌面设置TextView控件演示了App Widget的使用,详见我的博文:http://blog.csdn.net/zhai56565/article/details/8656395
自己改的一个App Widget通过service和定时器实现定时更新的源码,自己改的一个App Widget通过service和定时器实现定时更新的源码,自己改的一个App Widget通过service和定时器实现定时更新的源码
android appwidget使用说明及示例程序
Android应用源码之Android小部件AppWidget.zip
1,widget 基本展示 2,widget点击跳转到activity 3,发送广播事件,更新widget界面