PendingIntent是指把Intent包装了一层, 并且把PendingIntent放入一个新的进程. 通过触发事件去触发这个PendingIntent.
创建PendingIntent方法.
1. getActivity(Context context, int requestCode, Intent intent, int flags)
2. getBroadcast(Context context, int requestCode, Intent intent, int flags)
3. getService(Context context, int requestCode, Intent intent, int flags)
例子:
在/res/xml中新建一个example_appwidget.xml
- <?xml
version="1.0"
encoding="utf-8"?>
-
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
-
android:minWidth="294dp"
android:minHeight="72dp"
-
android:updatePeriodMillis="86400000"
android:initialLayout="@layout/example_appwidget_info">
-
</appwidget-provider>
在/res/layout中新建一个example_widget.xml
- <?xml
version="1.0"
encoding="utf-8"?>
-
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
-
android:orientation="vertical"
android:layout_width="match_parent"
-
android:layout_height="match_parent">
-
<TextView
android:text="firstWidgetText"
android:background="#000000"
-
android:id="@+id/widgetTextId"
android:layout_width="fill_parent"
-
android:layout_height="wrap_content"></TextView>
-
<Button
android:layout_width="match_parent"
android:id="@+id/button1"
android:text="Button"
android:layout_height="wrap_content"></Button>
-
</LinearLayout>
main.xml的内容不变
ExampleAppWidgetProvider.java内容
- package com.cn;
-
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 ExampleAppWidgetProvider
extends AppWidgetProvider {
-
@Override
-
public void onDeleted(Context context,
int[] appWidgetIds) {
-
System.out.println("onDeleted");
-
super.onDeleted(context, appWidgetIds);
- }
-
@Override
-
public void onDisabled(Context context) {
-
System.out.println("onDisabled");
-
super.onDisabled(context);
- }
-
@Override
-
public void onEnabled(Context context) {
-
System.out.println("onEnabled");
-
super.onEnabled(context);
- }
-
@Override
-
public void onReceive(Context context, Intent intent) {
-
System.out.println("onReceive");
-
super.onReceive(context, intent);
- }
-
@Override
-
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
-
int[] appWidgetIds) {
-
System.out.println("onUpdate");
-
for (int i =
0; i < appWidgetIds.length; i++) {
- System.out.println(appWidgetIds[i]);
-
-
Intent intent = new Intent(context,TargetActivity.class);
-
-
PendingIntent pending = PendingIntent.getActivity(context, 0, intent,
0);
-
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.example_widget);
-
-
- remoteViews.setOnClickPendingIntent(R.id.button1, pending);
-
-
-
appWidgetManager.updateAppWidget(appWidgetIds[i], remoteViews);
- }
-
super.onUpdate(context, appWidgetManager, appWidgetIds);
- }
- }
AndroidManifest.xml
- <?xml
version="1.0"
encoding="utf-8"?>
-
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
-
package="com.cn"
-
android:versionCode="1"
-
android:versionName="1.0">
-
<uses-sdk
android:minSdkVersion="10"
/>
-
<application
android:icon="@drawable/icon"
android:label="@string/app_name">
-
<activity
android:name=".Appwidget2Activity"
-
android:label="@string/app_name">
-
<intent-filter>
-
<action
android:name="android.intent.action.MAIN"
/>
-
<category
android:name="android.intent.category.LAUNCHER"
/>
-
</intent-filter>
-
</activity>
-
<receiver
android:name="ExampleAppWidgetProvider">
-
-
<intent-filter>
-
<action
android:name="android.appwidget.action.APPWIDGET_UPDATE"></action>
-
</intent-filter>
-
-
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/example_appwidget_info"></meta-data>
-
</receiver>
-
<activity
android:name="TargetActivity"></activity>
-
</application>
-
</manifest>
TargetActivity.java内容
- package com.cn;
-
import android.app.Activity;
-
import android.os.Bundle;
-
public class TargetActivity
extends Activity {
-
@Override
-
protected void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- }
- }
分享到:
相关推荐
App Widget 的概念 一个简单的App Widget例子 PendingIntent的使用 RemoteViews的使用 接收来自App Widget的广播 更新App Widget的控件状态
NULL 博文链接:https://sunzone.iteye.com/blog/1998091
Android中pendingIntent的深入理解
这样我们就可以画出如下示意图:PendingIntent 只能通过下列的静态方法获取//获取Broadcast关联的PendingIntent PendingI
Notification的用法和PendingIntent的使用
简单的总结了Intent和PendtingIntent的区别,经常与alermanger 和notificationmanager一起使用。
博客《详解PendingIntent》所涉及的源码,这是博客中所说的有问题的PendingIntent对应原源代码
Android中PendingIntent的简要介绍.pdf 学习资料 复习资料 教学资源
要得到一个pendingIntent对象,使用方法类的静态方法 getActivity(Context, int, Intent, int),getBroadcast(Context, int, Intent, int),getService(Context, int, Intent, int) 分别对应着Intent的3个行为,跳转...
PendingIntent 分别实现了Notification和sms短信发送的两个示例
PendingIntent,RemoteViews 下面这些库的用法 建造 克隆项目 从获取API密钥以获取TransLoc API 转到TransLocWidget / gradle.properties_UPDATEME并添加API密钥 将gradle.properties_UPDATEME重命名为gradle....
android的服务以及通知的小例子 个人存档 代码笔记见http://blog.sina.com.cn/s/blog_70356c200100y9pf.html
博客《详解PendingIntent》有问题的源码第二部分
自制发送短信程序--SmsManager与PendingIntent类的使用
NULL 博文链接:https://technicalsearch.iteye.com/blog/2007636
AppWidget下getBroadcast的使用
根据本讲学习内容,学会运用AlarmManager和PendingIntent实现定时提醒功能。 (1) 提交的作业包中含有应用程序运行效果截图。
主要介绍了Android编程实现PendingIntent控制多个闹钟的方法,涉及PendingIntent属性设置与使用的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
* 先建构一PendingIntent对象并使用getBroadcast()方法进行Broadcast * * 将PendingIntent,电话,简讯文字等参数传入sendTextMessage()方法发送简讯*/ PendingIntent mPI = PendingIntent.getBroadcast(EX05_03....