android点滴之PendingIntent的使用

一概念

PendingIntent就是一个能够在满足一定条件下运行的Intent,它相比于Intent的优势在于自己携带有Context对象。这样他就不必依赖于某个activity才干够存在。

它和Intent的主要差别在于Intent的运行立马的,而pendingIntent的运行不是立马的。pendingIntent运行的操作实质上是參数传进来的Intent的操作。可是使用pendingIntent的目的在于它所包括的Intent的操作的运行是须要满足某些条件的。

二实质

PendingIntent能够看作是对Intent的包装。PendingIntent主要持有的信息是它所包装的Intent和当前Application的Context。

正因为PendingIntent中保存有当前Application的Context,使它赋予带他程序一种运行的Intent的能力,就算在运行时当前Application已经不存在了,也能通过存在PendingIntent里的Context照样运行Intent。

三常见使用场景及代码

1.定时闹钟

PendingIntent pi1 = PendingIntent.getBroadcast(context,AutoTimeringBroadcast1.class,1);//创建意图
AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
         am.setRepeating(AlarmManager.RTC_WAKEUP,time,1000*60*60*24, pi);//time为目标时间毫秒值。反复运行就可以

2.通知点击打开界面

NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)
int icon = android.R.drawable.stat_notify_chat;
long when = System.currentTimeMillis();//通知发生的时间为系统当前时间
//新建一个通知,指定其图标和标题
Notification notification = new Notification(icon, null, when);//第一个參数为图标,第二个參数为短暂提示标题,第三个为通知时间
notification.defaults = Notification.DEFAULT_SOUND;//发出默认声音
notification.flags |= Notification.FLAG_AUTO_CANCEL;//点击通知后自己主动清除通知
Intent openintent = new Intent(this, OtherActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, openintent, 0);//当点击消息时就会向系统发送openintent意图
notification.setLatestEventInfo(this, “标题”, “我是内容", contentIntent);//点击后做的事情就是contentIntent的任务

mNotificationManager.notify(0, notification);//第一个參数为自己定义的通知唯一标识,发出这个通知!

3.发送短信后获取回执

SmsManager的用于发送短信的方法:

sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent);

第一个參数:destinationAddress 对方手机号码

第二个參数:scAddress 短信中心号码 一般设置为空

第三个參数:text 短信内容

第四个參数:sentIntent推断短信是否发送成功,假设你没有SIM卡,或者网络中断。则能够通过这个itent来推断。注意强调的是“发送”的动作是否成功。

那么至于对于对方是否收到,另当别论

第五个參数:deliveryIntent当短信发送到收件人时。会收到这个deliveryIntent。即强调了“发送”后的结果

就是说是在"短信发送成功"和"对方收到此短信"才会激活 sentIntent和deliveryIntent这两个Intent。

这也相当于是延迟运行了Intent

时间: 2024-10-15 13:04:08

android点滴之PendingIntent的使用的相关文章

android点滴之ContentObserver的使用

一概念 ContentObserver用于观察(捕捉)特定Uri引起的数据的变化,继而做一些对应的处理,当ContentObserver所观察的Uri发生变化时,便会触发它. 从概念看ContentObserver特别适合用于监视系统数据的变化,比方数据库发生了修改,或者其它不论什么已经在UriMatcher类注冊过的Uri,比方:Settings.System.ACCELEROMETER_ROTATION,能够监视系统屏幕的方向. 二使用 1.创建 mObserver = new Conten

android点滴之ViewTreeObserver

一类的基本概念 这是一个注册监听视图树的观察者(observer),在视图树种全局事件改变时得到通知.这个全局事件不仅还包括整个树的布局,从绘画过程开始,触摸模式的改变等.最常见的用途时通过监听获知什么时候,视图的宽高值确定了,可以获取了,以便更改UI. 二类的主要接口:监听器 interface  ViewTreeObserver.OnGlobalFocusChangeListener 当在一个视图树中的焦点状态发生改变时,所要调用的回调函数的接口类 interface  ViewTreeOb

android点滴之标准SD卡状态变化事件广播接收者的注册

目前最完整的,需要注册的动作匹配如下: IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED); intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED); intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_STARTED); intentFilter.addAction(Intent.ACTION_ME

android点滴之HandlerThread的用法

bochs调试的有些命令根据版本好像有变化,我在ubuntu下安装了bochs-2.4.6,发现和bochs-2.3.6命令出现区别,在2.3.6版本支持dump_cpu.info r等命令,在我安装的2.4.6版本中不支持这两个命令,后面在使用bochs的过程中会陆续总结一些2.4.6支持的命令,最简单的方法是通过help来获取,下面先记录一些常用的: r 查看通用寄存器 sreg 查看段寄存器(IDTR被归到这里) creg 查看系统寄存器(CR0等) x 查看内存(线性地址) xp 查看内

android点滴之触控相关知识点(持续更新)

1.检查当前屏幕有多少个触摸点. 使用MotionEvent的getPointerCount()方法. 2.多点触控下,触摸的状态的检测 MotionEvent类中方法getActionMasked(),这个方法可以检查触摸的状态: 当只有一个触摸点时(只用一根手指触摸屏幕),按下是0,起来是1,移动是2: 当触摸点多于1时(多根手指触摸屏幕),按下是5,起来是6,移动是2: 3.多点触控下,每个触点的分类处理 多点触摸时 假如是第i个点 int x = event.getX(i); int y

Android点滴---AndroidAnnotations java.lang.ClassNotFoundException

今天在网上找资料, 下载了一个Demo, 运行时报: Caused by: java.lang.ClassNotFoundException: Didn't find class "net.mobctrl.listviewdemo.MainActivity_" on path: DexPathList[[zip file "/data/app/net.mobctrl.listviewdemo-2.apk"], nativeLibraryDirectories=[/d

Android开发之PendingIntent的使用

PendingIntent,待确定的意图,等待的意图 官网链接:http://developer.android.com/reference/android/app/PendingIntent.html 官网关于该类的继承关系,PendingIntent继承自Object.因为该类为final,所以没有子类,无法被继承. 要想得到一个PendindIntent对象,需要使用方法类的静态方法 getActivity(Context, int, Intent, int),getActivities(

Android点滴---ViewHolder通用,优雅写法

近期在做项目时,又要写 ViewHolder. 突然想到网上看看有没什么好的写法! 不知道你是不是也烦透了写那些没有技术含量的ViewHolder 看看这些.也许会有收获! 然后就找到了以下两篇文章(感谢分享! ): ViewHolder超简洁写法 点击跳转 优雅的使用ViewHolder 点击跳转 然后自己整理的了, 保存起来.省的忘记.顺便分享一下! 直接贴代码了: 第一种: import android.util.SparseArray; import android.view.View;

android点滴记录1

1.EditText 中的光标位置调整 Android 的 EditText 控件默认获取焦点的时候, 插入光标是在第一个位置的,如果EditText中设置了文本, 这个时候光标是在文本的最前面, 而不是文本的最后. 为了方便用户使用, 需要把光标移动到文本最后, 但是EditText 没有提供 setCursor 函数.  经查看其文档 发现 setSelection 函数可以完成该功能. 如下: EditText et = ... 02. String text = "text";