app widget简单用法(2)

本文章是对我学习 android 过程中学到的知识进行汇总、整理、与分享。内容来源为 网络流传的视频、文章、android官方文档等。在此感谢那些在我学习过程中提供知识和帮助的无私的人。


如何在 app widget 上添加按钮并监控呢?接着上一篇继续。


使用对象:pendingIntent 和 RemoteViews

1. pendingIntent :待决定的意图 。里面放的是真正的意图( intent ),当某事件触发pengding intent 时,里面真正的意图( intent )才会生效。

PendingIntent 的三个静态方法:

getActivity(Context context, int requestCode, Intent intent, int flags);

getBroadcast(Context context, int requestCode, Intent intent, int flags);

getService(Context context, int requestCode, Intent intent, int flags);

2. RemoteViews :远程View 。不在一个线程中的 view 。

创建步骤:

1. 在上一篇的 app widget 布局文件(res/Layout/  appwidget.xml )中添加一个 button。

  <Button
        android:id="@+id/appwidget_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="测试"/>

2. 给button绑定监听器。

在 MyAppWidgetProvider 里的 onUpdate 方法中绑定。(因为每次添加或更新都会回调该方法)

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
//传入的参数:第一个参数,context。第二个参数 用来操作app widget的对象。第三个参数,app widget被创建时的id(因为一个app widget可以被创建很多个,所以需要用id来区分)。
for(int i = 0; i < appWidgetIds.length; i++){
Log.d("mybug", ""+appWidgetIds);
//创建(跳转到MainActivity) 的intent。
Intent intent = new Intent(context,MainActivity.class);
//创建 PendingIntent ,里面存放 刚才创建的 intent 。
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
//得到RemoteViews实例 。第一个参数 包名 ,第二个参数 app widget的布局文件名(通过包名和文件名来找到该 views)。
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.appwidget);
//为 views 设置监听。 第一个参数,监听按钮的id,第二个参数 PendingIntent。
remoteViews.setOnClickPendingIntent(R.id.appwidget_button, pendingIntent);
//用onUpdate()被传入的 AppWidgetManager 对象 来操作app widget。这里调用了它的 updateAppWidget方法。
appWidgetManager.updateAppWidget(appWidgetIds[i], remoteViews);
}

Log.d("mybug", "onUpdate() is start");
super.onUpdate(context, appWidgetManager, appWidgetIds);
}


至此,带按钮且含有监听事件的 app widget 就创建好了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值