使用AppWidgetProvider类
你必须通过在清单文件中使用<receiver>元素来声明你的AppWidgetProvider 类实现为一个广播接收器(参见上面的Declaring an App Widget in the Manifest)。
AppWidgetProvider 类扩展BroadcastReceiver 为一个简便类来处理App Widget广播。AppWidgetProvider只接收和这个App Widget相关的事件广播,比如这个App Widget被更新,删除,启用,以及禁用。当这些广播事件发生时,AppWidgetProvider 将接收到下面的方法调用:
onUpdate(Context, AppWidgetManager, int[])
这个方法调用来间隔性的更新App Widget,间隔时间用AppWidgetProviderInfo 里的updatePeriodMillis属性定义。这个方法也会在用户添加App Widget时被调用,因此它应该执行基础的设置,比如为视图定义事件处理器并启动一个临时的服务Service,如果需要的话。但是,如果你已经声明了一个配置活动,这个方法在用户添加App Widget时将不会被调用,而只在后续更新时被调用。配置活动应该在配置完成时负责执行第一次更新。onDeleted(Context, int[]) 当App Widget从宿主中删除时被调用。onEnabled(Context)
当一个App Widget实例第一次创建时被调用。比如,如果用户添加两个你的App Widget实例,只在第一次被调用。如果你需要打开一个新的数据库或者执行其他对于所有的App Widget实例只需要发生一次的设置,那么这里是完成这个工作的好地方。
onDisabled(Context)
当你的App Widget的最后一个实例被从宿主中删除时被调用。你应该在onEnabled(Context)中做一些清理工作,比如删除一个临时的数据库。
onReceive(Context, Intent)
这个接收到每个广播时都会被调用,而且在上面的回调函数之前。你通常不需要实现这个方法,因为缺省的AppWidgetProvider 实现过滤所有App Widget 广播并恰当的调用上述方法。
最重要的AppWidgetProvider 回调函数是onUpdated(), 因为它是在每个App Widget添加进宿主时被调用的。如果你的App Widget 要接受任何用户交互事件,那么你需要在这个回调函数中注册事件处理器。如果你的App Widget不创建临时文件或数据库,或者执行其它需要清理的工作,那么onUpdated() 可能是你需要定义的唯一的回调函数。比如,如果你想要一个带一个按钮的App Widget,当点击时启动一个活动,你可以使用下面的AppWidgetProvider实现:
java代码:
public class ExampleAppWidgetProvider extends AppWidgetProvider {
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int N = appWidgetIds.length;
for (int i=0; i<N; i++) {
int appWidgetId = appWidgetIds[i];
Intent intent = new Intent(context, ExampleActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.appwidget_provider_layout);
views.setOnClickPendingIntent(R.id.button, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
}
复制代码
创建一个App Widget 配置活动
如果你想让用户在添加一个新的App Widget时调整设置,你可以创建一个App Widget配置活动。这个活动将被App Widget宿主自动启动并允许用户在创建时配置可用的设置,比如App Widget颜色,尺寸,更新周期或者其它功能设置。
这个配置活动应该在Android清单文件中声明为一个通用活动。不过,它将被通过ACTION_APPWIDGET_CONFIGURE活动而被App Widget宿主启动,因此这个活动需要接受这个意图。比如:
java代码:
<activity android:name=".ExampleAppWidgetConfigure">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
</activity>
复制代码
同样的,活动必须在AppWidgetProviderInfo XML 文件中声明,通过android:configure属性(参见上面的添加AppWidgetProviderInfo元数据Adding the AppWidgetProviderInfo Metadata)。比如,配置活动可以声明如下:
java代码:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:configure="com.example.android.ExampleAppWidgetConfigure"
</appwidget-provider>
复制代码
注意这个活动是用全名声明的,因为它将从你的程序包外被引用。
这就是所有关于配置活动你一开始需要了解的。现在你需要一个真实的活动。这儿就有,不过,当你实现这个活动时记住两件重要的事情:
• App Widget 宿主调用配置活动而且配置活动应该总是返回一个结果.这个结果应该包含这个通过启动该活动的意图传递的App Widget ID(以EXTRA_APPWIDGET_ID保存在意图的附加段Intent extras中)
• 当这个 App Widget 被创建时将不会调用onUpdate() 方法(当一个配置活动启动时,系统将不会发送ACTION_APPWIDGET_UPDATE广播).配置活动应该在 App Widget 第一次被创建时负责从AppWidgetManager请求一个更新.不过, onUpdate() 将在后续更新中被调用-只忽略第一次.
分享到:
相关推荐
在Android开发中,AppWidget是桌面小插件,它并不像普通的应用程序那样通过用户点击图标启动,而是直接在主屏幕上显示并可以实时更新内容。用户可以自定义小部件的大小和样式,并且可以通过小部件与应用程序进行简单...
在Android平台上,AppWidget是Android系统提供的一种小部件功能,允许开发者创建可以在用户主屏幕上显示的小应用程序。AppWidgets虽然小巧,但能为用户提供便捷的功能访问,例如天气预报、音乐播放控制等。本教程将...
在"appwidget"这个压缩包文件中,可能包含了示例代码和资源文件,供开发者学习如何实现上述功能。通过研究这些文件,你可以更好地理解App Widget的工作原理和实现细节,从而在自己的项目中创建出富有特色的桌面小...
Android AppWidget是Android系统提供的一种轻量级组件,允许开发者在用户的主屏幕上创建小型应用程序,通常称为小部件或快捷方式。这些小部件不需要用户启动应用,就能直接在主屏幕上显示和交互,为用户提供便捷的...
在Android平台上,AppWidget是应用程序可以提供的一种桌面小部件,让用户在主屏幕上获得快速的交互体验,无需打开完整的应用程序。这个“Android高级应用源码-Android小部件AppWidget.zip”包含了一个关于如何创建和...
在安卓平台上,AppWidget是Android系统提供的一种轻量级组件,允许开发者在用户的主屏幕上创建交互式的迷你应用程序,也就是我们通常所说的桌面小部件。这个压缩包"安卓Android源码——安卓Android小部件AppWidget....
AppWidget是Android系统提供的一种组件,它允许开发者在用户的主屏幕上创建自定义的小部件,无需用户启动应用程序。这种功能极大地增强了用户体验,使用户能够快速访问或控制应用的功能,而无需打开应用本身。本文将...
【AppWidget_DEMO】是一个关于Android App Widget的演示项目,由CSDN博主u012792686分享。App Widget是Android系统提供的一种小型应用组件,用户可以在主屏幕上添加,无需打开应用程序就能获取信息或执行简单操作。...
【AppWidget_FlashLight】是Android平台上的一种应用小部件,它允许用户在主屏幕上快捷启动或关闭设备的闪光灯功能,无需打开完整的应用程序。在Android系统中,AppWidget是可以通过小部件面板添加到主屏幕上的小型...
AppWidget是放置在手机屏幕的桌面小组件应用,如时钟、日历、天气等组件,与一般应用程序有所不同。一般应用虽也可以以图标的形式(快捷方式)放在桌面,但必须点击运行和查看;而AppWidget一般不须点击即直观呈现其...
AppWidget是Android系统提供的一种功能,它允许应用程序在用户的主屏幕上显示小部件,为用户提供快捷的功能入口或信息概览,而无需打开应用程序本身。在这个项目中,开发者模仿了"乐桌面四叶草"的设计,四叶草通常...
Android AppWidget是Android操作系统提供的一种服务,允许开发者创建可以在用户主屏幕上显示的小应用程序,通常称为桌面小工具。这些小工具不需用户启动,可以实时显示信息,为用户提供快速访问应用功能或查看信息的...
Android的AppWidget,又称桌面小部件,是一种能够让用户在手机或平板电脑的主屏幕上直接交互的迷你应用程序。它们提供了一种便捷的方式,让用户无需打开完整的应用程序就能访问常用功能,如查看时间、天气预报或者...
Android桌面Widget是Android应用组件之一,它类似于一个小应用程序,可以被放置在用户的主屏幕上,为用户提供快捷的操作或信息展示。它们通过AppWidgetProvider类与系统交互,并使用RemoteViews来更新其内容。 创建...
- **AppWidgetProvider类**:实现拨号逻辑,处理ACTION_APPWIDGET_UPDATE和ACTION_APPWIDGET_DELETED等广播事件。 - **布局XML文件**:定义Widget的UI结构,包括拨号按钮和可能的联系人信息。 - **AndroidManifest....
在Android平台上,Widget是应用程序的一种轻量级交互方式,它可以在用户的主屏幕上提供实时信息或者简单操作,无需打开完整应用。本课程设计的主题是“Android课程设计Widget电池插件”,旨在让学生掌握如何创建一个...
在Android系统中,Widget是应用程序与用户交互的一种独特方式,它能够在主屏幕上提供快速访问的功能,比如我们的主题——“Widget快捷拨号程序”。这个源码是一个实现简单快捷拨号功能的小型应用,用户可以通过在主...
在Android系统中,Widget是应用程序可以提供的一种桌面扩展功能,让用户可以直接在主屏幕上与应用进行交互,无需打开应用本身。Widget通常被设计成简洁、快速访问的形式,如天气预报、时钟、音乐播放控制等。本教程...
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> android:name="android.appwidget.provider" android:resource="@xml/widget_info" /> ``` - 其次,创建`MyWidgetProvider`类继承...