Android-接受来自Appwidget的广播、更新Appwidget控件的状态
听说得桌面者得填写,就拿PC来说吧,360和QQ基本上是使用最频繁的应用程序,每个程序在PC桌面右下角都会有相应的控件,占据桌面的时间越长,用户使用频率就越多,这样才会为应用程序带来更多的利益。手机桌面也是这样,毋庸置疑,使用最多自然是桌面上的。那如何添加自己的控件到桌面上呢,又如何改变控件的状态呢。
我自己做了个简单的实例:当点击图片按钮是,下面的图片就会更新为另一个图片
创建项目:AppWidget03
项目运行效果:
步骤:
1.定义布局文件:appwidget_provider_layout.xml
2.在res目录下新建目录xml,创建xml文件:appwidget_provider.xml
3.在manifest文件下注册receiver
4.新建类Appwidget继承AppwidgetProvider
5.重写AppwidgetProvider的OnUpdate方法,和OnReceiver方法
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageButton
android:id="@+id/imageButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/th_desktop"/>
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/th_twitter"
/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="292dp"
android:minHeight="72dp"
android:updatePeriodMillis="30000"
android:initialLayout="@layout/main"
>
</appwidget-provider>
<receiver android:name="AppWidget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
</intent-filter>
<intent-filter>
<action android:name="org.wwj.appwidget.UPDATE_APP_WIDGET"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/appwidget_provider"/>
</receiver>
package mars.appwidget03;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews;
public class AppWidget extends AppWidgetProvider {
//定义一个常量字符串,该常量用于命名Action
private static final String UPDATE_ACTION = "mars.appwidget03.UPDATE_APP_WIDGET";
@Override
public void onDeleted(Context context, int[] appWidgetIds) {
// TODO Auto-generated method stub
super.onDeleted(context, appWidgetIds);
}
@Override
public void onDisabled(Context context) {
// TODO Auto-generated method stub
super.onDisabled(context);
}
@Override
public void onEnabled(Context context) {
// TODO Auto-generated method stub
super.onEnabled(context);
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
String action = intent.getAction();
if (UPDATE_ACTION.equals(action)) {
System.out.println("onReceive--->" + UPDATE_ACTION);
}
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
//创建一个Intent对象
Intent intent = new Intent();
//为Intent对象设置Action
intent.setAction(UPDATE_ACTION);
//使用getBroadcast方法,得到一个PendingIntent对象,当该对象执行时,会发送一个广播
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0,
intent, 0);
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
R.layout.main);
remoteViews.setOnClickPendingIntent(R.id.imageButton, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
}
}
更多详细信息请查看
java教程网 http://www.itchm.com/forum-59-1.html
分享到:
相关推荐
本文将深入探讨Android AppWidget的第四部分,主要关注如何更新AppWidget中的控件,以及相关的源码和工具。 **一、AppWidget更新机制** 1. **AppWidgetProvider**: 这是所有AppWidget的核心组件,它是一个...
Android 桌面控件(AppWidget)是Android操作系统提供的一种独特功能,允许开发者创建可以在用户主屏幕上显示的小型应用程序组件。这些控件通常提供快速访问应用的核心功能或展示实时信息,如天气预报、日历事件或...
App Widget 的概念 一个简单的App Widget例子 PendingIntent的使用 RemoteViews的使用 接收来自App Widget的广播 更新App Widget的控件状态
了解了基本概念后,开发者可以通过阅读《Android 之桌面组件 App Widget 案例》、《Android Launcher开发之桌面小部件AppWidget详解》以及相关的博客文章来深入学习。这些资料提供了丰富的实例和代码解析,帮助理解...
在Android开发中,AppWidget是桌面小部件,它允许开发者扩展Android主屏幕的功能,提供一种在用户主屏幕上显示实时信息和交互式控件的方式。本文将深入探讨如何在AppWidget中自定义Action广播,以便更好地控制和扩展...
AppWidget桌面小控件是Android操作系统提供的一种独特功能,它允许开发者将应用程序的部分功能或信息直接展示在用户的手机或平板电脑的主屏幕上,无需打开应用即可进行交互。AppWidget不仅提升了用户体验,还增加了...
Android UI组件AppWidget控件是Android系统提供的一种特殊类型的组件,允许开发者创建可以在用户主屏幕上的小工具。这些小工具通常提供快速访问应用程序功能或显示实时信息的方式,比如天气预报、音乐播放控制等。...
AppWidget 是 Android 平台上的一个重要特性,它允许开发者创建小型应用组件并嵌入到其他应用(如 Launcher)中,实现信息展示或快捷操作等功能。AppWidget 的概念与传统意义上的控件有所不同,它更多地是指一种可以...
它们通过App Widget Provider组件与应用程序交互,并且可以通过BroadcastReceiver接收并响应来自系统的广播事件。 2. **创建App Widget的基本步骤** - **定义布局**: 使用XML文件设计Widget的界面,通常包含...
例如,在`my_appwidget.xml`中,有一个按钮控件。当用户点击这个按钮时,AppWidgetProvider会接收到一个Intent,然后根据Intent的类型执行相应的操作,可能是启动一个新的Activity,更新数据,或者启动一个Service。...
每个AppWidget由一个`AppWidgetProvider`类定义,它是Android广播接收器的子类,用于监听与AppWidget相关的事件,如添加、删除或更新小组件。在`AndroidManifest.xml`中注册这个类: ```xml <receiver android:name...
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
开发Widget时,需要创建一个App Widget Provider,这是一个特殊的BroadcastReceiver,用于监听和响应与Widget相关的广播事件,如添加、删除或更新Widget。 3. **App Widget Host**: App Widget Host是负责管理并...
AppWidgetProvider是一个特殊的类,负责处理AppWidget中的控件状态更新。我们可以使用AppWidgetProvider来实现控件状态的更新。 7. 广播机制 在AppWidget中,我们需要实现控件状态的更新机制。我们可以使用广播...
- 事件处理:覆盖onReceive()方法,根据ACTION参数处理不同事件,如ACTION_APPWIDGET_UPDATE用于处理更新请求。 2. **RemoteViews**: - 定义:RemoteViews类表示App Widget的布局和内容,可以设置各种视图(View...
你还需要确保Widget的配置文件(appwidget-provider.xml)正确配置了尺寸、更新间隔等参数。 在实际开发中,为了提供更好的用户体验,你还可以考虑实现更多高级功能,如滑动切换月份、添加/编辑日程的快捷方式、...
AppWidget通过继承`AppWidgetProvider`实现控制,这是一个特殊类型的`BroadcastReceiver`,用于响应来自系统的广播事件,如小部件的创建、更新、启用和禁用。这表明AppWidget不是传统的`Activity`,它不具备`...
7. **更新AppWidget**:当控件位置改变时,需要调用`AppWidgetManager.updateAppWidget()`方法来刷新小部件的视图。 8. **兼容性测试**:由于不同的Android版本和设备可能存在差异,务必进行广泛的兼容性测试,确保...