`

创建一个简单的widget(转载自mars)

 
阅读更多

1 、创建一个AppWidgetProvider 

 

 

public class ExampleAppWidgetProvider extends AppWidgetProvider {
	//定义一个常量字符串,该常量用于命名Action
	private static final String UPDATE_ACTION = "mars.appwidget03.UPDATE_APP_WIDGET";
	//定义一个常量字符串,用于杀死app
	private static final String KILL_APP = "com.rui.app.KILL_APP";

	@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();
		Log.i("TAG", action);
	}

	@Override
	public void onUpdate(Context context, AppWidgetManager appWidgetManager,
			int[] appWidgetIds) {
		Log.i("TAG", "===================================");
		//创建一个Intent对象
		Intent intent = new Intent();
		//为Intent对象设置Action
		intent.setAction(KILL_APP);
		//使用getBroadcast方法,得到一个PendingIntent对象,当该对象执行时,会发送一个广播
		PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0,
				intent, 0);
		RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
				R.layout.example_appwidget);
		remoteViews.setOnClickPendingIntent(R.id.widgetButtonId, pendingIntent);
		appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
	}

 

2 、在layout下面创建一个用于显示内容的布局  example_appwidget.xml

 

     <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<Button
	android:id="@+id/widgetButtonId"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:text="测试用按钮"
	/>
</LinearLayout>

 

3 、再在res下面的xml下面新建一个 xml  (example_appwidget_info.xml)文件来指定此widget的一些信息:

 

     <appwidget-provider

	xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="294dp"
    android:minHeight="72dp"
    android:updatePeriodMillis="5000"
    android:initialLayout="@layout/example_appwidget"
 >
</appwidget-provider>
 

4 、 最后在 AndroidManifest.xml 中配置此widget的一些必须信息:

 

      <receiver android:name="ExampleAppWidgetProvider">

			<intent-filter>
				<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
			</intent-filter>
			<intent-filter>
				<action android:name="mars.appwidget03.UPDATE_APP_WIDGET"/>
			</intent-filter>
			<intent-filter>
				<action android:name="com.rui.app.KILL_APP"/>
			</intent-filter>
			<meta-data android:name="android.appwidget.provider"
				android:resource="@xml/example_appwidget_info" />
		</receiver>
 

 

分享到:
评论

相关推荐

    Mars4_5.jar_Mars4_5_Mars_Mars4.5_mars4_5软件_mars4_

    **Mars4_5.jar** 是一个用于学习和教授MIPS(Microprocessor without Interlocked Pipeline Stages,无互锁流水线阶段微处理器)汇编语言的软件工具,它被称为 **MARS**,全称为 **MIPS Assembler and Runtime ...

    mars3d-simple-angular-widget-master.zip

    "Mars3D-simple-angular-widget-master.zip"这个压缩包文件是专为Angular框架设计的一个组件库,其核心是利用Mars3D技术来构建三维地球应用。这个库的出现,旨在解决开发者在使用开源产品Cesium时遇到的功能不完善、...

    mars3d-es5-widget:Mars3D传统技术栈下的小部件项目模版

    Mars3D基础项目模版(含widget模块)-ES5传统版传统模式Web前端技术栈下的一个拥有widget基础功能的应用的三维地球项目模版其他技术栈,请参考项目说明该项目与Mars3D基础项目的目录和文件完全相同,这是Mars3D基础...

    mars教程源码一二三四季

    在Android开发中,Mars(Mobile AI Research System,移动人工智能研究系统)是一个重要的开源框架,它为开发者提供了丰富的工具和库,支持在移动设备上进行高效的人工智能计算。本教程源码包括了一二三四季的内容,...

    MARS的使用说明1

    作为一款基于Java的模拟器,MARS提供了一个友好的图形用户界面(GUI),使用户可以轻松地编写、调试和运行MIPS汇编语言程序。 从标题和描述中可以看出,本文主要介绍了MARS的使用说明,旨在帮助用户快速上手使用...

    mars3d平台Vue3最简的项目模板源码

    火星三维(Mars3D)平台是一个基于Cesium的开源Web GIS框架,它提供了一整套用于构建高效、高性能的三维地球应用的解决方案。Vue3是最新的Vue.js版本,具有更好的性能和更丰富的特性和API。这个"Mars3D平台Vue3最简...

    mars3d-supermap-master_supermap_火星代码_火星科技cesium_mars3d-supermap_

    Vue.js是一个用于构建用户界面的渐进式框架,以其简单易用和灵活性著称。在"mars3d-supermap-master"项目中,Vue.js被用作前端开发的主要工具,负责管理应用程序的状态和视图层。Vue.js与Cesium的结合,可以实现3D...

    mars3d平台Vue2最简的项目模板源码

    火星三维(Mars3D)平台是一个基于Cesium的开源Web GIS框架,它提供了一整套用于构建三维地球应用的解决方案。Vue2是最简的项目模板源码,适合初学者快速搭建基于Mars3D的Web应用。在这个模板中,我们将深入探讨与...

    Mars3D+nginx 搭建离线API服务,本地访问

    在Windows上,通常有一个简单的安装程序。按照提示完成安装,并确保配置文件路径正确。 3. **配置nginx**:编辑nginx的配置文件(通常是`nginx.conf`),在`http`或`server`块内新增一个location,指向Mars3D的API...

    mars_droid视频源代码以及PPT

    这个项目可能是由Mars团队创建的一个开源Android应用或者库,旨在帮助开发者学习和理解Android应用程序的开发流程,特别是与视频处理相关的技术。 【描述】中的内容表明,这个资源包包含了以下几部分: 1. **视频...

    Mars老师android视频教程第一,二,三季源码

    10. **02_10_appwidget04**:这是另一个AppWidget的实践,可能更深入地探讨了AppWidget的高级特性或特定功能。 通过对这些源码的详细研究,开发者不仅可以理解每个知识点的理论,还能看到它们在实际项目中的应用。...

    eclipse-mars(自带maven)(32位,64位)

    Mars版本是Eclipse的一个重要迭代,发布于2015年,提供了许多增强的功能和改进。这个版本的一个显著特点是它集成了Maven,一个强大的构建自动化工具,使得Java开发者能够更方便地管理项目依赖和构建过程。 Maven是...

    aes最后一轮5个候选算法之一MARS实现源码

    2. 初始置换:输入的数据块首先会经过一个初始的置换操作,改变其位顺序,增加破解的难度。 3. 数据处理循环:这是MARS的核心部分,数据会经过多轮处理。每一轮包括替换、行移位、列混淆和字节混淆四个步骤。 - ...

    mars android视频课程代码

    在Android开发领域,Mars是一个备受瞩目的项目,它由知名开发者创建并维护,旨在提供一套高效、易用的Android开发工具集。"mars android视频课程代码"是针对这个项目的实战教学资料,帮助学员深入理解Mars框架的实现...

    Mars,MARS MIPS simulator

    火星(Mars)MIPS 模拟器是一个用于学习和测试 MIPS(Microprocessor without Interlocked Pipeline Stages,无互锁流水线级微处理器)汇编语言的软件工具。该模拟器由 Java 开发,因此具备跨平台特性,可以在多种...

    取消eclipse mars2(4.5.2)部分按键自动补全

    标题“取消eclipse mars2(4.5.2)部分按键自动补全”指的是一个定制化的解决方案,旨在禁用Eclipse Mars 2中特定按键触发的代码补全。这个解决方案涉及到修改或替换Eclipse的内部配置文件,以改变自动补全的触发行为...

    mars3d平台React最简的项目模板源码

    火星三维平台(Mars3D)是一个基于Cesium的开源Web GIS框架,它提供了一整套用于构建高效、高性能的三维地理信息系统应用的解决方案。在本项目中,“mars3d-react-template”是一个针对React开发者的最简项目模板,...

    Mars数独游戏开发

    Canvas是Java AWT中的一个组件,它提供了一个画布,可以在上面进行图形绘制。Paint是用于在Canvas上绘制的基本方法,我们可以通过重写其paint()方法来实现自定义的绘制逻辑。 在“Mars数独”游戏中,我们需要实现...

    eclipse4.5 mars 64位 自带Maven插件

    Eclipse 4.5 Mars是Eclipse IDE的一个重要版本,主要针对Java开发,同时也支持多种其他编程语言。这个版本在2015年发布,它引入了许多改进和新特性,旨在提升开发者的效率和用户体验。作为一款64位版本,Eclipse ...

Global site tag (gtag.js) - Google Analytics