zoukankan      html  css  js  c++  java
  • ANDROID_MARS学习笔记_S02_006_APPWIDGET2_PendingIntent及RemoteViews实现widget绑定点击事件

    一、代码流程

    1.ExampleAppWidgetProvider的onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds),其中appWidgetIds表示widget的id,

    在这个方法里,通过for遍历appWidgetIds,用PendingIntent和RemoteViews给widget的按钮绑定click事件,用appWidgetManager.updateAppWidget(appWidgetIds[i], remoteViews)更新widget

    二、PendingIntent及RemoteViews简介

    三、代码
    1.xml
    (1)AndroidManifest.xml

    添加activity

    1 <activity android:name=".TargetActivity" android:label="TargetActivityLabel"/>

    (2)example_appwidget.xml

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:orientation="vertical"
     4     android:layout_width="fill_parent"
     5     android:layout_height="fill_parent"
     6     >
     7 <TextView  
     8     android:id="@+id/widgetTextId"
     9     android:layout_width="fill_parent" 
    10     android:layout_height="wrap_content" 
    11     android:text="firstWidgetText"
    12     android:background="#000000"
    13     />
    14 <Button
    15     android:id="@+id/widgetButtonId"
    16     android:layout_width="fill_parent"
    17     android:layout_height="wrap_content"
    18     android:text="测试用按钮"
    19     />
    20 </LinearLayout>

    2.java
    (1)ExampleAppWidgetProvider.java的update

     1 @Override
     2     public void onUpdate(Context context, AppWidgetManager appWidgetManager,
     3             int[] appWidgetIds) { //每个widget都有id
     4         System.out.println("onupdate");
     5         for(int i = 0; i < appWidgetIds.length ; i++) {
     6             System.out.println(appWidgetIds[i]);
     7             //创建一个Intent对象
     8             Intent intent = new Intent(context, TargetActivity.class);
     9             //创建一个PendingIntent
    10             PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
    11             RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.example_appwidget);
    12             //为按钮绑定事件处理器
    13             //第一个参数用来指定被绑定处理器的控件的ID
    14             //第二个参数用来指定当事件发生时,哪个PendingIntent将会被执行
    15             remoteViews.setOnClickPendingIntent(R.id.widgetButtonId, pendingIntent);
    16             //更新AppWidget
    17             //第一个参数用于指定被更新AppWidget的ID
    18             appWidgetManager.updateAppWidget(appWidgetIds[i], remoteViews);
    19         }
    20         super.onUpdate(context, appWidgetManager, appWidgetIds);
    21     }

    (2)TargetActivity.java

    1 public class TargetActivity extends Activity {
    2 
    3     @Override
    4     protected void onCreate(Bundle savedInstanceState) {
    5         System.out.println("TargetActivity onCreate()----->");
    6         super.onCreate(savedInstanceState);
    7     }
    8 }
  • 相关阅读:
    Spring Cloud微服务安全实战_5-4_认证服务器使用spring session
    Spring Cloud微服务安全实战_5-3_基于session的SSO
    Spring Cloud微服务安全实战_5-2_实现授权码认证流程&实现SSO初步
    Spring Cloud微服务安全实战_5-1_单点登录基本架构
    Linux启动Spring boot项目命令
    Spring Cloud微服务安全实战_4-10_用spring-cloud-zuul-ratelimit做限流
    Spring Cloud微服务安全实战_4-9_用zuul网关解耦安全逻辑和业务逻辑
    Spring Cloud微服务安全实战_4-8_网关安全_01
    Spring Cloud微服务安全实战_4-7_token&client信息持久化到数据库
    几个好用Maven 镜像仓库地址
  • 原文地址:https://www.cnblogs.com/shamgod/p/5199652.html
Copyright © 2011-2022 走看看