本文章是对我学习 android 过程中学到的知识进行汇总、整理、与分享。内容来源为 网络流传的视频、文章、android官方文档等。在此感谢那些在我学习过程中提供知识和帮助的无私的人。
上一篇我们讲了如何在 app widget 上添加按钮并实现了点击跳转 activity 的功能,但实际中点击 app widget 更多的是希望它发送广播,以便我们后台处理用户的点击意图。那么如何在 app widget 上设置监听并发送广播呢?接着上一篇的代码,我们继续。
1. 在 app widget 布局文件中添加一个按钮。
2. 为 MyAppWidgetProVider 注册 intent-filter 。
3. 使用 getBroadcast() 方法创建 PendingIntent 。
4. 为 app widget 的控件注册监听器。
5. 在 onReceive() 方法中接受广播消息。
是不是很熟悉?,其实前四个步骤上一篇已经详细的讲过了。
1. 在(res/Layout/ appwidget.xml )中添加一个 button。
<Button
android:id="@+id/appwidget_button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="广播"/>
2. 在上一篇的 AndroidMainFest.xml 中添加一个 intent-filter:
<intent-filter>
<action
android:name="test_appWidget_button"/>
</intent-filter>
注意添加在上一篇写的那个 receive 的 intent-filter 的旁边,不要修改其他的内容
3.4. 依然是在 MyAppWidgetProvider 的 onUpdate() 方法中创建 监听:
//创建带 action 的intent。这个 action 就是刚才自己定义的 action
Intent _intent = new Intent();
_intent.setAction("test_appWidget_button");
//创建 PendingIntent ,里面存放 刚才创建的 intent 。
PendingIntent _pendingIntent = PendingIntent.getBroadcast(context, 0, _intent, 0);
//得到RemoteViews实例。因为上一篇在代码(本段代码在上一篇代码下面)中已经得到了 RemoteViews 对象,可以直接再次使用,所以将其备注掉。
//RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.appwidget);
//为 views 设置监听。
remoteViews.setOnClickPendingIntent(R.id.appwidget_button2, _pendingIntent);
//最后更新一下控件内容(记得把上面那句相同代码注释掉。)
appWidgetManager.updateAppWidget(appWidgetIds[i], remoteViews);
5. 在 MyAppWidgetProvider 的 onReceive() 方法中 判断接收到的 action :
if(intent.getAction().equals("test_appWidget_button")){
Log.d("mybug","receiver is boardcast");
}
至此, app widget 按钮的监听 发送广播就已经实现。
以后会我做一个 app widget 的音乐播放器桌面,或 android桌宠 ?
转载请注明原文地址: https://www.6miu.com/read-2807.html