Android开发之PendingIntent的使用

PendingIntent,待确定的意图,等待的意图

官网链接:http://developer.android.com/reference/android/app/PendingIntent.html

 

官网关于该类的继承关系,PendingIntent继承自Object。因为该类为final,所以没有子类,无法被继承。

要想得到一个PendindIntent对象,需要使用方法类的静态方法 getActivity(Context, int, Intent, int)getActivities(Context, int, Intent[], int)getBroadcast(Context, int, Intent, int)getService(Context, int, Intent, int)

这几个静态方法分别对应着Intent的行为,跳转到Activity,Activities,Broadcast,Service。

这4个静态方法的参数都一样,其中第一个和第三个参数比较的重要,其次是第二个和第四个。第一个参数传入当前的context,第三个参数传入intent.

PendingIntent是一个特殊的Intent,主要区别是intent是立马执行,PendingIntent是待确定的Intent。PendingIntent的操作实际上是传入的intent的操作。

使用pendingIntent的目的主要是用于所包含的intent执行是否满足某些条件。

主要的地方:Notification,SmsManager,AlarmManager等

1.Notification例子:

 1 NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
 2 mBuilder.setSmallIcon(R.drawable.notification_icon)
 3 mBuilder.setContentTitle("My notification")
 4 mBuilder.setContentText("Hello World!");
 5 Intent resultIntent = new Intent(this, ResultActivity.class);
 6 PendingIntent resultPendingIntent = PendingIntent.getActivity(this,0,resultIntent,PendingIntent.FLAG_UPDATE_CURRENT);
 7 mBuilder.setContentIntent(resultPendingIntent);
 8 int mNotificationId = 001;
 9 // Gets an instance of the NotificationManager service
10 NotificationManager mNotifyMgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
11 // Builds the notification and issues it.
12 mNotifyMgr.notify(mNotificationId, mBuilder.build());

2.SmsManager例子:

1 SmsManager smsManage = SmsManager.getDefault();
2 Intent intent=new Intent("SEND_SMS_ACTION");
3 PendingIntent pendingIntent=PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);
4 smsManage.sendTextMessage("13xxxxxxxxx", null, "这是一条短信", pendingIntent, null);

主要常量
FLAG_CANCEL_CURRENT:如果当前系统中已经存在一个相同的PendingIntent对象,那么就将先将已有的PendingIntent取消,然后重新生成一个PendingIntent对象。
FLAG_NO_CREATE:如果当前系统中不存在相同的PendingIntent对象,系统将不会创建该PendingIntent对象而是直接返回null。
FLAG_ONE_SHOT:该PendingIntent只作用一次。在该PendingIntent对象通过send()方法触发过后,PendingIntent将自动调用cancel()进行销毁,那么如果你再调用send()方法的话,系统将会返回一个SendIntentException。
FLAG_UPDATE_CURRENT:如果系统中有一个和你描述的PendingIntent对等的PendingInent,那么系统将使用该PendingIntent对象,但是会使用新的Intent来更新之前PendingIntent中的Intent对象数据,例如更新Intent中的Extras。

 

请参考:http://blog.csdn.net/hudashi/article/details/7060837

 

转载于:https://www.cnblogs.com/liyiran/p/4656821.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值