`
hanllove001
  • 浏览: 47925 次
  • 性别: Icon_minigender_1
  • 来自: 绵阳
社区版块
存档分类
最新评论

android之appwidget(二)启动新activity

阅读更多

紧接上集,appwidget的周期函数对应的事件:

onUpdate:到达指定时间之后或者用户向桌面添加appwidget时候会调用这个方法。

onDelete:当appwidget被删除时,会调用这个方法。

onEnable:当一个appwidget第一次被创建,会调用这个方法。

onDisable:当最后一个appwidget实例被删除后,会调用这个方法。

onReveice:接受广播事件。

调试出来了么?

 

这集内容是如何与appwidget交互:

我们实现的功能是创建一个appwidget(为一个button),点击后,启动一个activity。


同样是新知识介绍:

1、我们的appwidget与我们对应的activity不是同一个进程,appwidget是homescreen中的一个进程。所以,我们不能直接对某一个控件进行事件监听,而是通过RemoteViews进行处理,而且我们也不能直接用intent进行启动activity,用pendingintent。

2、pendingintent:顾名思义,是还未确定的Intent。可以看做是对intent的一个包装,目的是对RemoteViews进行设置。形象点讲就是我们进程A中的intent想要在进程B中执行,需要pendingintent进行包装,然后添加到进程B中,进程B中遇到某个事件,然后执行intent。

创建pendingintent有三个方法:getActivity(context,requestCode,intent,flags)。getService()。getBroadcast()。

3、RemoteViews:即远程的views。他的作用是他所表示的对象运行在另外的进程中。


现在话不多说,果断代码:

1、我们在上集的appwidget.xml中(即桌面控件上加上一个Button)代码:


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


 2、我们在provider中的onUpdate方法中进行处理:


for(int i= 0;i<appWidgetIds.length;i++){
			System.out.println(appWidgetIds[i]);
			//新intent
			Intent intent = new Intent(context,Appwidget2Activity.class);
			//创建一个pendingIntent。另外两个参数以后再讲。
			PendingIntent pendingIntent = PendingIntent.getActivity(
					context, 0, intent, 0);
			//创建一个remoteViews。
			RemoteViews remoteViews  = new RemoteViews(
					context.getPackageName(), R.layout.appwidget);
			//绑定处理器,表示控件单击后,会启动pendingIntent。
			remoteViews.setOnClickPendingIntent(R.id.button, pendingIntent);
			appWidgetManager.updateAppWidget(appWidgetIds[i], remoteViews);
		}

因为我们可能有多个appwidget,所以要遍历。创建一个intent,与要启动的activity关联起来,然后根据该intent创建一个pendingintent。然后根据appwidget.xml创建一个remoteViews,然后对该views中的一个控件进行pendingintent绑定。


好了,打完收工!

3
9
分享到:
评论
1 楼 筱内涵丶 2016-10-01  
如果我想从被启动的activity中获取数据并且更新到widget上又应该怎样做呢

相关推荐

    appWidget启动Activity

    使用appWidget启动一个Activity

    谈谈Android里的Context的使用

    import android.app.Activity; import android.content.Context; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import ...

    新版Android开发教程.rar

    Android Android Android Android 手机新概念 操作系统的选择 -------- 定制和长尾 � 重构 � MVC 和 Web APP 架构 Android Android Android Android 开发背景 � 计算技术、无线接入技术的发展,使嵌入式系统逐渐...

    android开发资料大全

    android用户界面之Widget教程实例汇总 android用户界面之TabHost教程实例汇总 android用户界面之Gallery教程实例汇总 android用户界面之按钮(Button)教程实例汇 android用户界面之ProgressBar教程实例汇总 android...

    android开发入门与实战(上)

    9.1.2 用Intent启动一个新的Activity 9.1.3 Intent详细讲解 9.1.4 Android解析Intent实现 9.2 用广播告诉你——利用Intent来广播(BroadCast)事件 9.2.1 实现Android中的广播事件 9.2.2 BroadCastReceiver介绍 9.3 ...

    Android学习小结之Activity保存和恢复状态

    Android中启动一个Activity如果点击Home键该Activity是不会被销毁的,但是当进行某些操作时某些数据就会丢失,如下: Java class: package com.king.activitytest2; import android.support.v7.app....

    Android基础知识详解

    用Intent启动Activity,并在Activity之间传递数据 106 调用其他应用程序中的Activity(打电话、浏览网页、发Email等) 109 接收和发送广播 113 接收系统广播 113 在自己的应用程序中发送广播 117 Android服务 118 系统...

    Android如何在App中启动系统闹钟

    由于不同Android手机厂商提供的系统闹钟包名都不一致,所以只能通过过滤当前手机所有的应用,以确定闹钟应用的包名,进而启动它。 这里采用的过滤规则是:系统应用 && 应用的PackageName包含”widget” 和 “clock...

    机智云公版开源App-智能插座Android版

    Gizwits Power Socket Android Demo App XPGWifiSDK 版本号 1.6.1.15123015 功能介绍 这是一款使用XPGWifiSDK的开源代码示例APP,可以帮助开发者快速入手,使用XPGWifiSDK开发连接机智云的物联APP。该APP针对的...

    Android移动开发实验6.doc

    &lt;com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"&gt; &lt;androidx.appcompat.widget....

    《Google Android SDK开发范例大全(第3版)》.pdf

    4.30 实时配置桌面上的appwidget ui layout 163 4.31 识别输入装置id与inputdevice装置 166 4.32 选取文字的聪明文字联想 169 4.33 设计与launcher相同的三页滑动layout 172 第5章 交互式通信服务与...

    google android sdk开发范例大全 第二版 PDF 光盘代码

     4.30 实时配置桌面上的AppWidget UI Layout  第5章 交互式通信服务与手机控制   5.1 具有正则表达式的TextView   5.2 ACTION!CALL!拨打电话   5.3 自制发送短信程序   5.4 自制发送E-mail...

    Google Android SDK开发范例大全(第3版) 1/5

    4.30 实时配置桌面上的AppWidget UI Layout 4.31 识别输入装置ID与InputDevice装置 4.32 选取文字的聪明文字联想 4.33 设计与Launcher相同的三页滑动Layout 第5章 交互式通信服务与手机控制 5.1 具有正则表达式的...

    Google Android SDK开发范例大全(第3版) 4/5

    4.30 实时配置桌面上的AppWidget UI Layout 4.31 识别输入装置ID与InputDevice装置 4.32 选取文字的聪明文字联想 4.33 设计与Launcher相同的三页滑动Layout 第5章 交互式通信服务与手机控制 5.1 具有正则表达式的...

    Google Android SDK开发范例大全(第3版) 3/5

    4.30 实时配置桌面上的AppWidget UI Layout 4.31 识别输入装置ID与InputDevice装置 4.32 选取文字的聪明文字联想 4.33 设计与Launcher相同的三页滑动Layout 第5章 交互式通信服务与手机控制 5.1 具有正则表达式的...

    Google Android SDK开发范例大全(第3版) 5/5

    4.30 实时配置桌面上的AppWidget UI Layout 4.31 识别输入装置ID与InputDevice装置 4.32 选取文字的聪明文字联想 4.33 设计与Launcher相同的三页滑动Layout 第5章 交互式通信服务与手机控制 5.1 具有正则表达式的...

    Google Android SDK开发范例大全(第3版)part2

     4.30 实时配置桌面上的AppWidget UI Layout  4.31 识别输入装置ID与InputDevice装置  4.32 选取文字的聪明文字联想  4.33 设计与Launcher相同的三页滑动Layout  第5章 交互式通信服务与手机控制  5.1 ...

    MapView的使用

    import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class SendCityName...

Global site tag (gtag.js) - Google Analytics