`

接收来自AppWidget的广播并更新控件状态

 
阅读更多

一 接收来自App Widget的广播

   1.在AndroidManifest.xml为AppWidgetProvider注册新的intente-filter;

   2.使用getBroadcast()创建一个PendingIntent;

   3.为App Widget中的控件注册处理器;

   4.在onReceive方法中接收广播;

a.布局文件中有个Button

  <Button 
  	android:id="@+id/widgetButtonId"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="測試用按鈕"
  />

 

b.在extends AppWidgetProvider实现类中定义了一个变量

private static final String state="my_state";

 c.在AndroidManifest.xml注册

	<receiver android:name="ExampleAppWidgetProvider">
		<intent-filter>
			<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
		</intent-filter>
		<intent-filter >
			<action android:name="my_state"/>
		</intent-filter>
		<meta-data android:name="android.appwidget.provider"
			android:resource="@xml/example_appwidget_info" />
	</receiver>

 d.复写onUpdate方法发送广播

@Override
	public void onUpdate(Context context, AppWidgetManager appWidgetManager,
			int[] appWidgetIds) {
Intent intent=new Intent();
		intent.setAction(state);
		//发送广播
		PendingIntent pendingIntent=PendingIntent.getBroadcast(context, 0, intent, 0);
		RemoteViews remoteViews=new RemoteViews(context.getPackageName(), R.layout.example_appwidget);
		remoteViews.setOnClickPendingIntent(R.id.widgetButtonId, pendingIntent);
		appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
		
		super.onUpdate(context, appWidgetManager, appWidgetIds);
	}

 

d.复写onReceive方法接收广播

@Override
	public void onReceive(Context context, Intent intent) {
		String action=intent.getAction();
		if(state.equals(action)){
			System.out.println("onReceive--"+action);
		}else{
			super.onReceive(context, intent);
		}
		
	}

 

当我们点击button时,后台打印出数据:



 二 更新控件状态

1.代码同上,只是在布局文件中加入一个textview

  <TextView 
  	android:id="@+id/widgetTextId"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="firstWidgetText"
  android:background="#000000"  
  />

 2.onUpdate代码同上,只是onReveice方法不同

@Override
	public void onReceive(Context context, Intent intent) {
		String action=intent.getAction();
		if(state.equals(action)){
			RemoteViews remoteViews=new RemoteViews(context.getPackageName(), R.layout.example_appwidget);
			
			remoteViews.setTextViewText(R.id.widgetTextId, "xixi");
			
			AppWidgetManager appWidgetManager=AppWidgetManager.getInstance(context);
			ComponentName componentName=new ComponentName(context,ExampleAppWidgetProvider.class);
			appWidgetManager.updateAppWidget(componentName, remoteViews);
		}else{
			super.onReceive(context, intent);
		}
		
	}

 

程序运行效果就是,点击button文字改变为“xixi”.

 



 

  • 大小: 1.5 KB
  • 大小: 25.8 KB
分享到:
评论

相关推荐

    android之appwidget(四)终 appwidget控件更新

    2. ** onUpdate() 方法**: 在这个方法中,开发者编写代码来创建并更新RemoteViews对象,该对象代表AppWidget在主屏幕上显示的内容。例如,你可以在这里更新TextView的文本,ImageView的图片,或者更改Button的状态等...

    android app widget 介绍

    App Widget 的概念 一个简单的App Widget例子 PendingIntent的使用 RemoteViews的使用 接收来自App Widget的广播 更新App Widget的控件状态

    AppWidget桌面小控件

    AppWidget桌面小控件是Android操作系统提供的一种独特功能,它允许开发者将应用程序的部分功能或信息直接展示在用户的手机或平板电脑的主屏幕上,无需打开应用即可进行交互。AppWidget不仅提升了用户体验,还增加了...

    android 桌面控件appwidget

    2. **AppWidget提供者**(AppWidgetProvider):这是一个特殊的BroadcastReceiver,用于接收并处理与AppWidget相关的广播事件,如添加、删除或更新AppWidget。 3. **服务或BroadcastReceiver**:这通常用于更新App...

    android安卓app开发之widget界面控件使用教程.zip

    App Widget 的核心是 `AppWidgetProvider` 类,它是 Android 提供的广播接收器,用于处理与 App Widget 相关的广播事件,如添加、删除或更新 Widget。开发者需要创建一个继承自 `AppWidgetProvider` 的类,并在其中...

    android之appwidget(三)自定义action广播

    在Android开发中,AppWidget是桌面小部件,它允许开发者扩展Android主屏幕的功能,提供一种在用户主屏幕上显示实时信息和交互式控件的方式。本文将深入探讨如何在AppWidget中自定义Action广播,以便更好地控制和扩展...

    app widget

    AppWidget 是 Android 平台上的一个重要特性,它允许开发者创建小型应用组件并嵌入到其他应用(如 Launcher)中,实现信息展示或快捷操作等功能。AppWidget 的概念与传统意义上的控件有所不同,它更多地是指一种可以...

    Android UI组件AppWidget控件入门详解

    在`&lt;receiver&gt;`标签内,还需要包含一个`&lt;intent-filter&gt;`,用于指定监听的广播事件,如`android.appwidget.action.APPWIDGET_UPDATE`,这代表AppWidget更新的广播动作。 接着,需要在`xml`目录下定义AppWidget的...

    安卓桌面控件源码

    `AppWidgetProvider` 是一个广播接收器,负责监听和响应来自系统的事件,如用户添加、删除或更新桌面小部件。而`RemoteViews`则用来定义小部件在主屏幕上的布局和行为。 1. **AppWidgetProvider**: - 定义:...

    Android桌面组件App Widget用法入门教程

    例如,在`my_appwidget.xml`中,有一个按钮控件。当用户点击这个按钮时,AppWidgetProvider会接收到一个Intent,然后根据Intent的类型执行相应的操作,可能是启动一个新的Activity,更新数据,或者启动一个Service。...

    Android的桌面Widget的Demo

    它们通过App Widget Provider组件与应用程序交互,并且可以通过BroadcastReceiver接收并响应来自系统的广播事件。 2. **创建App Widget的基本步骤** - **定义布局**: 使用XML文件设计Widget的界面,通常包含...

    Android知识总结.doc

    AppWidget通过继承`AppWidgetProvider`实现控制,这是一个特殊类型的`BroadcastReceiver`,用于响应来自系统的广播事件,如小部件的创建、更新、启用和禁用。这表明AppWidget不是传统的`Activity`,它不具备`...

    android桌面小组件最简实例

    每个AppWidget由一个`AppWidgetProvider`类定义,它是Android广播接收器的子类,用于监听与AppWidget相关的事件,如添加、删除或更新小组件。在`AndroidManifest.xml`中注册这个类: ```xml ...

    ex07_Widget.rar_android

    它监听并响应系统广播,如用户点击Widget或者系统需要更新Widget的状态。 5. **AppWidgetProviderInfo配置** `appWidgetProviderInfo.xml`文件定义了Widget的元数据,包括最小宽度和高度、默认图标和更新频率等。...

    Android 编写与酷狗音乐极像的音乐播放器源代码.rar

     接受广播后,刷新桌面widget,改变widget播放状态,以及播放与暂停图标的切换,尝试更新歌词、歌曲信息,切换歌曲时,进度在歌词第一句之前则显示歌名歌手信息。  压缩包源码目录内的其它文件夹分别是APP的服务器...

    Mars老师android视频教程第一,二,三季源码

    这个目录可能包含创建和更新AppWidget的实例。 7. **02_15_animations05**:Android动画可以提升用户体验,使界面更具吸引力。这部分可能涉及到属性动画、视图动画等各种类型的动画效果实现。 8. **listview**:...

    TextSwitcher:仿京东、淘宝滚动小广播,实现文字轮播滚动

    要实现“仿京东、淘宝滚动小广播”的功能,首先需要在布局文件中添加TextSwitcher控件,并设置相应的属性,如宽度、高度、字体样式等。接下来,我们需要创建一个包含多条文本信息的列表,并设置一个定时器(Timer)...

    Android基础知识详解

    Android的系统架构 6 一、应用程序 6 二、应用程序框架 6 三、Android Runtime 7 四、系统库 7 五、Linux 内核 8 Webkit浏览器引擎简介 9 Dalvik虚拟机简介 11 ...窗口小部件(App Widget) 124 NDK编程 125

    Android控件AppWidgetProvider使用方法详解

    1. `onReceive(Context context, Intent intent)`:这是BroadcastReceiver的基本方法,每次接收到与小工具相关的广播时都会调用。在这里,你可以处理特定的Intent动作,比如ACTION_APPWIDGET_UPDATE或ACTION_APP...

Global site tag (gtag.js) - Google Analytics