app widget简单用法(3)

本文章是对我学习 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桌宠 ?
 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值