app widget简单用法(2)

xiaoxiao2021-02-27  442

本文章是对我学习 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 就创建好了。

转载请注明原文地址: https://www.6miu.com/read-3025.html

最新回复(0)