`
hanllove001
  • 浏览: 49173 次
  • 性别: 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

    在Android开发中,`appWidget` 是一种可以在用户主屏幕上显示的小部件,它提供了一种无需打开应用程序就能与用户交互的方式。本篇文章将深入探讨如何使用`appWidget`来启动一个`Activity`。 首先,我们需要了解`app...

    android之appwidget

    **Android之AppWidget详解** AppWidget是Android操作系统提供的一种组件,允许开发者在用户主屏幕上创建小型应用程序,这些小部件无需用户直接启动应用就能显示和交互。AppWidget为用户提供了一种快速访问应用功能...

    android appwidget使用说明及示例程序

    Android AppWidget是Android系统提供的一种轻量级组件,允许开发者在用户的主屏幕上创建小型应用程序,通常称为小部件或快捷方式。这些小部件不需要用户启动应用,就能直接在主屏幕上显示和交互,为用户提供便捷的...

    android app widget demo

    在"appwidget"这个压缩包文件中,可能包含了示例代码和资源文件,供开发者学习如何实现上述功能。通过研究这些文件,你可以更好地理解App Widget的工作原理和实现细节,从而在自己的项目中创建出富有特色的桌面小...

    AndroidStudio简单实现单击Widget打开Activity

    &lt;action android:name="android.appwidget.action.APPWIDGET_UPDATE" /&gt; android:name="android.appwidget.provider" android:resource="@xml/widget_info" /&gt; &lt;activity android:name=".WidgetActivity"&gt; ...

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

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

    android 桌面控件appwidget

    5. **添加AppWidget到主屏幕**:在应用中提供一个启动器(Launcher)Activity,让用户可以将AppWidget添加到主屏幕。这个Activity通常会启动一个Intent,让用户选择AppWidget的大小和位置。 6. **测试和发布**:...

    Android -- AppWidget源码.zip

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

    Android之初学Appwidget

    **Android之初学AppWidget** 在Android开发中,AppWidget是一种非常独特且实用的功能,它允许开发者将小部件(Widget)放置在用户的主屏幕上,提供快速访问或者简单的交互操作。AppWidget并非传统意义上的应用程序...

    AppWidget窗口小部件

    AppWidget是Android操作系统中的一种特性,它允许开发者创建可以在用户主屏幕上展示的小型应用组件,用户无需打开应用就能与之交互。AppWidget是Android系统为用户提供快捷服务和信息预览的有效方式,使得应用程序的...

    android appWidget每日一句源码

    在这个"android appWidget每日一句"项目中,我们可以看到如何创建一个能够每天展示一句新格言或名言的AppWidget。 一、AppWidget组件基础 1. `AppWidgetProvider`:这是AppWidget的核心类,继承自...

    Android小部件AppWidget

    Android小部件AppWidget是Android操作系统中的一个重要特性,它允许用户在主屏幕上放置应用程序的轻量级视图,提供快速访问或交互的功能。AppWidget并非完整的应用程序,而是应用程序的一个部分,通常展示简化的UI和...

    AppWidget学习demo

    6. **安装和启动**: 用户可以通过Android的Widget选择器将AppWidget添加到主屏幕。开发者的测试则可以通过Android Studio的模拟器或真机调试进行。 在实际开发中,AppWidget还可以结合服务(Service)和广播接收器...

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

    4. **Widget配置Activity(可选)**: 当用户添加AppWidget时,系统可以启动一个配置Activity,让用户自定义AppWidget的一些初始设置。 **二、创建AppWidget步骤** 1. **定义AppWidgetProviderInfo**: 在...

    appwidget时间每秒刷新一次

    在Android平台上,AppWidget是小部件的简称,它允许开发者创建可以放置在用户主屏幕上的小型应用程序。在本例中,我们关注的是一个特定类型的AppWidget,它显示时间并每秒更新一次。创建这样一个实时更新的时钟App...

    Android -- AppWidget的开....zip

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

    Android代码-Android小部件AppWidget.rar

    在Android平台上,AppWidget是应用程序可以提供的一种小型用户界面组件,它们可以在用户的主屏幕上显示,类似于桌面小部件。这些小部件通常用于提供快速访问或控制应用程序的功能,无需真正打开应用程序。"Android...

    AppWidget

    AppWidget是Android系统提供的一种组件,它允许开发者在用户的主屏幕上创建自定义的小部件,无需用户启动应用程序。这种功能极大地增强了用户体验,使用户能够快速访问或控制应用的功能,而无需打开应用本身。本文将...

Global site tag (gtag.js) - Google Analytics