紧接上集,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绑定。
好了,打完收工!
分享到:
相关推荐
在Android开发中,`appWidget` 是一种可以在用户主屏幕上显示的小部件,它提供了一种无需打开应用程序就能与用户交互的方式。本篇文章将深入探讨如何使用`appWidget`来启动一个`Activity`。 首先,我们需要了解`app...
**Android之AppWidget详解** AppWidget是Android操作系统提供的一种组件,允许开发者在用户主屏幕上创建小型应用程序,这些小部件无需用户直接启动应用就能显示和交互。AppWidget为用户提供了一种快速访问应用功能...
Android AppWidget是Android系统提供的一种轻量级组件,允许开发者在用户的主屏幕上创建小型应用程序,通常称为小部件或快捷方式。这些小部件不需要用户启动应用,就能直接在主屏幕上显示和交互,为用户提供便捷的...
在"appwidget"这个压缩包文件中,可能包含了示例代码和资源文件,供开发者学习如何实现上述功能。通过研究这些文件,你可以更好地理解App Widget的工作原理和实现细节,从而在自己的项目中创建出富有特色的桌面小...
在Android系统中,AppWidget是桌面小部件的实现,它允许开发者将应用程序的功能和信息集成到用户的主屏幕上,用户无需打开应用即可与之交互。这个压缩包“Android -- AppWidget源码.zip”很可能是包含了Android App...
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> android:name="android.appwidget.provider" android:resource="@xml/widget_info" /> <activity android:name=".WidgetActivity"> ...
在Android开发中,AppWidget是桌面小部件,它允许开发者扩展Android主屏幕的功能,提供一种在用户主屏幕上显示实时信息和交互式控件的方式。本文将深入探讨如何在AppWidget中自定义Action广播,以便更好地控制和扩展...
5. **添加AppWidget到主屏幕**:在应用中提供一个启动器(Launcher)Activity,让用户可以将AppWidget添加到主屏幕。这个Activity通常会启动一个Intent,让用户选择AppWidget的大小和位置。 6. **测试和发布**:...
**Android之初学AppWidget** 在Android开发中,AppWidget是一种非常独特且实用的功能,它允许开发者将小部件(Widget)放置在用户的主屏幕上,提供快速访问或者简单的交互操作。AppWidget并非传统意义上的应用程序...
AppWidget是Android操作系统中的一种特性,它允许开发者创建可以在用户主屏幕上展示的小型应用组件,用户无需打开应用就能与之交互。AppWidget是Android系统为用户提供快捷服务和信息预览的有效方式,使得应用程序的...
在这个"android appWidget每日一句"项目中,我们可以看到如何创建一个能够每天展示一句新格言或名言的AppWidget。 一、AppWidget组件基础 1. `AppWidgetProvider`:这是AppWidget的核心类,继承自...
Android小部件AppWidget是Android操作系统中的一个重要特性,它允许用户在主屏幕上放置应用程序的轻量级视图,提供快速访问或交互的功能。AppWidget并非完整的应用程序,而是应用程序的一个部分,通常展示简化的UI和...
6. **安装和启动**: 用户可以通过Android的Widget选择器将AppWidget添加到主屏幕。开发者的测试则可以通过Android Studio的模拟器或真机调试进行。 在实际开发中,AppWidget还可以结合服务(Service)和广播接收器...
4. **Widget配置Activity(可选)**: 当用户添加AppWidget时,系统可以启动一个配置Activity,让用户自定义AppWidget的一些初始设置。 **二、创建AppWidget步骤** 1. **定义AppWidgetProviderInfo**: 在...
在Android平台上,AppWidget是小部件的简称,它允许开发者创建可以放置在用户主屏幕上的小型应用程序。在本例中,我们关注的是一个特定类型的AppWidget,它显示时间并每秒更新一次。创建这样一个实时更新的时钟App...
在Android系统中,AppWidget是桌面小部件的实现方式,它允许开发者将应用程序的功能和信息直接集成到用户的主屏幕上,用户无需打开应用就能与之交互。AppWidget虽然看似简单,但其实涉及到了许多核心的Android组件和...
在Android平台上,AppWidget是应用程序可以提供的一种小型用户界面组件,它们可以在用户的主屏幕上显示,类似于桌面小部件。这些小部件通常用于提供快速访问或控制应用程序的功能,无需真正打开应用程序。"Android...
AppWidget是Android系统提供的一种组件,它允许开发者在用户的主屏幕上创建自定义的小部件,无需用户启动应用程序。这种功能极大地增强了用户体验,使用户能够快速访问或控制应用的功能,而无需打开应用本身。本文将...