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

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

阅读更多

 

紧接上集的appwidget,我们学了如何在appwidget中启动一个新activity,这次我们要根据自己的一个action而启动一个广播,从而完成我们需要的操作。

首先是新知识点:

首先,我们已经知道appwidget根本是基于广播事件的,这个从我们需要在AndroidManifest.xml配置receiver可以看出,既然是这样,那么我们也可以自己定义我们自己的action以及在provider中的onReceive中进行处理。

其次,我们需要知道appwidgetprovider的运行机制就更容易理解了,当appwidget有事件时就会发送一个广播(一个intent对象)到appwidgetprovider,他首先会启动onReceive方法来接收action,然后根据action的值来决定调用onUpdate,onDelete,onDisable,onEnable中的一个方法,他的这些方法都与一个action对应。这个模式和struts的请求分发差不多。

目前我还没找到如何上传本地图片的方法,所以只能用文字来描述,希望大家理解。

 

我们下面的实例实现的是自己定义一个action,然后在appwidgetprovider中的onReceiver中截取,然后输出一句话。

废话不多,代码如下:

 

1、首先在AndroidManifest.xml加入

 

<receiver android:name = "AppwidgetProvider">
	<intent-filter>
		<action
android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
	</intent-filter>
	<intent-filter >
	         <action android:name="hanl.UPDATE_ACTION"/>
	</intent-filter>
	<meta-data android:name="android.appwidget.provider"
				android:resource="@xml/appwidget_info">
	</meta-data>
</receiver>
 

 

我们增加了一个过滤器:action为"hanl.UPDATE_ACTION"。

 

 

2、我们在onUpdate函数内增加一个intent,为他设置action为hanl.UPDATE_ACTION,然后用pendingintent包装intent,然后进行事件绑定。这个在appwidget(一)有具体讲解。

 

 

	               @Override
	public void onUpdate(Context context, AppWidgetManager appWidgetManager,
			int[] appWidgetIds) {
		// TODO Auto-generated method stub
			//新intent
			Intent intent = new Intent();
//设置action,这个UPDATE_ACTION在上面定义的为static final String UPDATE_ACTION=hanl.UPDATE_ACTION;
			intent.setAction(UPDATE_ACTION);
			//创建一个pendingIntent。另外两个参数以后再讲。
			PendingIntent pendingIntent = PendingIntent.getBroadcast(
					context, 0, intent, 0);
			//创建一个remoteViews。
			RemoteViews remoteViews  = new RemoteViews(
					context.getPackageName(), R.layout.appwidget);
			//绑定处理器,表示控件单击后,会启动pendingIntent。
			remoteViews.setOnClickPendingIntent(R.id.button, pendingIntent);
			//更新
			appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
		super.onUpdate(context, appWidgetManager, appWidgetIds);
	}

 

 

3、然后在onReceive中进行拦截。

 

     @Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		String action = intent.getAction();
		if(action.equals(UPDATE_ACTION))
			System.out.println("onReceive-----"+action);
		super.onReceive(context, intent);
	}

 

 运行结果传不上来,大家试下看看,能不能输出这个action,预祝成功!

下集我们将讲解如果对appwidget控件进行修改,请期待。

分享到:
评论

相关推荐

    android之appwidget(一)简单appwidget

    &lt;action android:name="android.appwidget.action.APPWIDGET_UPDATE" /&gt; android:name="android.appwidget.provider" android:resource="@xml/my_app_widget_info" /&gt; ``` 其中,`MyAppWidgetProvider`是你...

    android appwidget使用说明及示例程序

    &lt;action android:name="android.appwidget.action.APPWIDGET_UPDATE" /&gt; android:name="android.appwidget.provider" android:resource="@xml/your_widget_provider_info" /&gt; ``` 3. **定义布局**: 使用...

    Android -- AppWidget源码.zip

    在Android系统中,AppWidget是桌面小部件的实现,它允许开发者将应用程序的功能和信息集成到用户的主屏幕上,用户无需打开应用即可与之交互。这个压缩包“Android -- AppWidget源码.zip”很可能是包含了Android App...

    appWidget启动Service

    在Android开发中,AppWidget是桌面小部件,它允许用户在主屏幕上与应用程序进行交互,而无需实际打开应用。Service是Android系统中的一个组件,它可以在后台长时间运行,执行一些耗时的操作,如音乐播放、数据同步等...

    Android基础教程之---AppWidget讲解2

    3. **实现AppWidgetProvider**: 重写onReceive()方法,处理ACTION_APPWIDGET_UPDATE、ACTION_APPWIDGET_DELETED等广播事件。 4. **配置BroadcastReceiver**: 在AppWidgetProvider中注册和注销BroadcastReceiver,...

    Android高级应用源码-Android小部件AppWidget.zip

    1. **AppWidget提供者(AppWidget Provider)**:这是Android系统与你的AppWidget交互的组件,定义了AppWidget的行为,如接收广播更新、添加、删除或更新AppWidget等。 2. **布局文件(Layout)**:定义了AppWidget...

    Android应用源码之Android小部件AppWidget.zip

    这个"Android应用源码之Android小部件AppWidget.zip"包含了一个关于如何创建和实现Android小部件(AppWidget)的源代码示例。 一、Android小部件(AppWidget)概述: AppWidget是Android系统的一个特性,它允许...

    Android -- AppWidget的开....zip

    在Android系统中,AppWidget是桌面小部件的实现方式,它允许开发者将应用程序的功能和信息直接集成到用户的主屏幕上,用户无需打开应用就能与之交互。AppWidget虽然看似简单,但其实涉及到了许多核心的Android组件和...

    AppWidget

    &lt;action android:name="android.appwidget.action.APPWIDGET_UPDATE" /&gt; android:name="android.appwidget.provider" android:resource="@xml/my_app_widget_info" /&gt; ``` 3. **创建布局文件**:在res/...

    创建appWidget

    &lt;action android:name="android.appwidget.action.APPWIDGET_UPDATE" /&gt; android:name="android.appwidget.provider" android:resource="@xml/app_widget_info" /&gt; ``` 其中,`AppWidgetProvider`是你...

    AppWidget的getBroadcast

    `android.appwidget.action.APPWIDGET_UPDATE`是AppWidgetProvider接口的默认更新动作,如果你需要自定义动作,也可以替换这个。 总结一下,`getBroadcast`在AppWidget中主要用于设置点击事件,触发...

    appwidget的简单使用

    &lt;action android:name="android.appwidget.action.APPWIDGET_UPDATE" /&gt; android:name="android.appwidget.provider" android:resource="@xml/app_widget_info" /&gt; ``` 这里,`MyAppWidgetProvider`是你...

    Android桌面插件App Widget用法分析

    1. **在清单文件中声明App Widget**:在AndroidManifest.xml中,你需要定义一个`&lt;receiver&gt;`标签,其中`android:name`属性指向你的AppWidgetProvider类,`&lt;intent-filter&gt;`包含ACTION_APPWIDGET_UPDATE动作,`...

    AppWidget_FlashLight

    【AppWidget_FlashLight】是Android平台上的一种应用小部件,它允许用户在主屏幕上快捷启动或关闭设备的闪光灯功能,无需打开完整的应用程序。在Android系统中,AppWidget是可以通过小部件面板添加到主屏幕上的小型...

    安卓开发-Android小部件AppWidget.zip

    在安卓开发中,掌握如何创建和配置AppWidget是提升用户体验的关键技能之一。 **1. AppWidget的基本概念** - **组件定义**: AppWidget是在AndroidManifest.xml文件中通过标签定义的,通常与BroadcastReceiver关联,...

    AppwidgetTest.

    在Android开发中,AppWidget是桌面小部件,它允许用户在主屏幕上添加应用程序的功能或信息概览,无需打开应用程序本身。AppWidgetTest项目显然旨在演示如何创建和管理这些小部件。接下来,我们将深入探讨AppWidget...

    Android开发入门之Appwidget用法分析

    &lt;action android:name="android.appwidget.action.APPWIDGET_UPDATE" /&gt; &lt;meta-data android:name="android.appwidget.provider" android:resource="@xml/example_appwidget_info" /&gt; ``` 2. **定义...

    android 桌面小窗口 widget demo

    &lt;action android:name="android.appwidget.action.APPWIDGET_UPDATE" /&gt; android:name="android.appwidget.provider" android:resource="@xml/app_widget_info" /&gt; ``` **步骤四:创建...

Global site tag (gtag.js) - Google Analytics