Android PendingIntent
来源:互联网 发布:勇往直前网络歌手歌词 编辑:程序博客网 时间:2024/05/21 21:01
Intent的主要功能是表示用户的一种操作意图,使用Intent之后将立即执行用户所有需要的操作,但是在Android中也提供了一个PendingIntent操纵,表示将要发生的操作。苏伟将要发生的Intent是指在当前的Activity不立即使用此Intent进行处理,而将此Intent封装后传递给其他Activity程序,而其他Activity程序在需要使用此Intent时才进行操作。
Intent:表示立刻执行;
PendintIntent:表示的是暂缓执行,遇到特殊条件才执行;
PendingIntent与Intent没有任何继承关系,所以这两个类表示两种不同的Intent操作,其方法和常量有:
No.
常量及方法
描述
1
Public static final int FLAG_CANCEL_CURRENT
重新生成一个新的PendingIntent对象
2
Public static final int FLAG_NO_CREATE
如果不存在PendingIntent对象,则创建一个新的
3
Public static final int FLAG_ONE_SHOT
创建的PendingIntent对象只使用一次
4
Public static final int FLAG_UPDATE_CURRENT
如果PendingIntent对象已经存在,则直接使用,并且实例化一个新的Intent对象
5
Public static PendingIntent getActivity(Context context,
Int requestCode,Intent intent,int flags)
通过PendingIntent启动一个新的Activity
6
Public static PendingIntent getBroadcast(Context context,
Int requestCode,Intent intent,int flags)
通过PendingIntent启动一个新的Broadcast
7
Public static PendingIntent getService(Context context,
Int requestCode,Intent intent,int flags)
通过PendingIntent启动一个新的Service
在Android操作系统中,狠毒地方都要使用PendingIntent类,如发送一些用户的通知(Notification)或者为用户发送短信(SMS)等都会使用到此类。
一、发送通知:Notification
Androd.app.Notification与Toast类似,可以直接在Android手机屏幕的最上面显示通知信息。使用Notification定义一条提示信息的标题、时间、内容以及具体的触发操作
No.
方法
类型
描述
1
Public Notification(nt icon,CharSequence tickerText,long when)
构造
创建一个新的Notification对象,并指定提示的图标、信息内容及显示的时间,如果为立刻显示,则直接使用System.currentTimeMillis()设置
2
Public void setLatestEventInfo(Context context,CharSequence contentTitle,CharSequence contentText,PendingIntent contentIntent)
普通
设置通知的标题、内容以及指定的PendingIntent
然后我们再通过android.app.NotificationManager类,该类就相当于一个发布Notification信息的组件,如果把NotificationManager类看作一个新闻广播,那么每个Notification就可以看作一条条的新闻信息。NotificationManager常用方法如下:
No.
方法
描述
1
Public void notify(String tag,int id, Notification notification)
指定发送信息的标签、显示图标、Notification对象
2
Public void notify(int id, Notification notification)
指定发送信息的显示图标、Notification对象
3
Public void cancel(String tag,int id)
取消指定标签、显示图标的信息
4
Public void cancel(int id)
取消指定图标的信息
5
Public void cancelAll()
取消所有信息
范例:
package com.iflytek.demo;import android.app.Activity;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.os.Bundle;public class PendingIntent01_NotificationActivity extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.main);NotificationManager notificationManager = (NotificationManager) super.getSystemService(Activity.NOTIFICATION_SERVICE);// 取得系统服务Notification notification = new Notification(R.drawable.ic_launcher,"来自XDWANG的消息。", System.currentTimeMillis()); // 立刻发送一个消息,信息图标、信息提示、显示时间PendingIntent contentIntent = PendingIntent.getActivity(this, 0,super.getIntent(), PendingIntent.FLAG_UPDATE_CURRENT); // 创建了一个PendingIntent对象notification.setLatestEventInfo(this, "王旭东","http://xdwangiflytek.iteye.com", contentIntent);// 信息标题、信息内容、待发送的IntentnotificationManager.notify("XDWANG", R.drawable.ic_launcher,notification);// 设置信息标签、设置图标、发送消息}}
二、SMS服务
前面我们说过Intent启动手机短信发送程序,其主要功能只是显示一个发送短信的窗口,而要想发送短信,用户需要手动进行,在Android中专门提供了一个android.telephony.SmsManager类,可以进行短信发送程序的调用
No.
方法
描述
1
Public ArrayList<String>divideMessage(String text)
拆分短信内容
2
Public static SmsManager getDefault()
取得默认手机的SmsManager对象
3
Public void sendTextMessage(String destinationAddress,String scAddress,String text,PendingIntent sendIntent,
PendingIntent diliveryIntent)
发送文字信息
4
Public void sendMulipartTextMessage(String destinationAddress,
String scAddress,ArrayList<String>parts,ArrayList<PendingIntent>
sentIntents,ArrayList<PendingIntent> deliveryIntents)
发送多条文字信息
5
Public void sendDataMessage(String destinationAddress,String
scAddress,short destinationPort,byte[] data,PendintIntent
sendIntent,PendingIntent deliveryIntent)
发送二进制数据信息
说明:destinationAddress:收件人地址
scAddress:设置短信中心的号码,如果设置为null,则为默认中心号码
text:指定发送短信的内容
sentIntent:当消息发出时,通过PendingIntent来广播发送成功或者失败的信息报告,如果该参数为空,则检查所有未知的应用程序,这样将导致发生发送时间延长
deliveryIntent:当信心发送到收件处时,该PendingIntent会进行广播
范例:
PendingIntent02_SMSActivity.java
package com.iflytek.demo;import java.util.Iterator;import java.util.List;import android.app.Activity;import android.app.PendingIntent;import android.os.Bundle;import android.telephony.SmsManager;import android.widget.Toast;public class PendingIntent02_SMSActivity extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.setContentView(R.layout.main);// 短信内容String content = "在昨天国防部例行记者会上,钓鱼岛问题依然是关注焦点。有记者提到,有媒体报道日本航空自卫队近半年来出动战斗机达到200余次,在日本政府宣布购岛行为之后剧增到54次,为前三个月的3.6倍,请问如何评论,在这方面中方采取了哪些措施?近年来,日本自卫队飞机针对中国的侦巡力度不断加大,损害了中国的主权权益和安全利益,也是引发中日海空安全问题的根源。国防部新闻事务局副局长、国防部新闻发言人杨宇军说,我们要求日方停止侵犯中国的主权权益,同时采取有效措施,避免和防止海空事故和不测事件的发生。";// 超过了70个字// 短信管理类SmsManager smsManager = SmsManager.getDefault();// 取得PendingIntentPendingIntent sentIntent = PendingIntent.getActivity(this, 0,super.getIntent(), PendingIntent.FLAG_UPDATE_CURRENT);if (content.length() > 70) { // 大于70个字,拆分List<String> msgs = smsManager.divideMessage(content); // 拆分信息Iterator<String> iterator = msgs.iterator();// 实例化Iteratorwhile (iterator.hasNext()) {// 迭代输出String msg = iterator.next();// 取出每一个子信息smsManager.sendTextMessage("13956027313", null, msg,sentIntent, null);// 发送文字信息}} else {//如果不大于70,则直接全部发送smsManager.sendTextMessage("13956027313", null, content,sentIntent, null);}Toast.makeText(this, "短信发送完成", Toast.LENGTH_SHORT).show();}@Overrideprotected void onDestroy() {sentIntent.cancel();super.onDestroy();}}
添加权限:
<uses-permission android:name="android.permission.SEND_SMS" />
- Android PendingIntent
- Android PendingIntent
- android PendingIntent
- android pendingIntent
- Android---PendingIntent
- Android PendingIntent
- android-pendingintent
- android pendingIntent
- android PendingIntent
- Android PendingIntent
- PendingIntent android.app.PendingIntent.getActivity的使用
- Android 之 PendingIntent(一)
- Android 之 PendingIntent(二)
- Android PendingIntent详解
- Android PendingIntent Notification
- Android之Pendingintent学习
- Android PendingIntent与AlarmManager
- android之PendingIntent使用
- 本地DNS的更新方法
- 用SQL获得表索引
- 地址搜集
- 由一道数据结构题目想到的
- VC 显示当前运行的所有进程
- Android PendingIntent
- 自己实现的Vector类 这是Vector.h文件
- MySQL执行计划解读
- Qwt源码解读之QwtPointPolar类
- Oracle sqlldr
- Discuz X2.5 漏洞修复失败,发现您的目录及文件无修改权限
- jQuery取得select选择的文本与值
- memcached的基础(一)
- Linux 下git的安装