有关PendingIntent和Notification之间的数据传递与更新

[size=medium] 这段文章,主要是我在学习Android中遇到PendingIntent和Notification之间的数据的传递与更新[/size]
关于Notification的创建及使用,在这我就不讲了,网上很多。这里主要描述的是我在学习中遇到的一个问题,也许也有其他的人和我一样遇到这样的问题,所以分享一下。
问题描述:最近在做一个短信软件的练习,我使用一个BroadcastReceiver接收了系统收到的短信,然后在BroadcastReceiver的onReceive()方法中跳转到另一个活动中,并向该活动传入短信号码、短信内容参数。最后在该活动中启动一个Notification,用户点击这个Notification后就能跳转到相应的短信会话列表中。不过,因为由Notification启动的活动是在一个新的栈(Task)中的,所以每次跳转的号码总是第一次的那个号码。后来通过查看ApiDemos的代码,发现是因为getActivity(Context context, int requestCode, Intent intent, int flags)中的参数不对导致的,具体:
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
new Intent(this,Conversation.class).setFlags (Intent.FLAG_ACTIVITY_NEW_TASK).putExtra("number", getIntent().getExtras().getString("number")).putExtra("name", "*!@*")
,[color=red]PendingIntent.FLAG_UPDATE_CURRENT[/color]);

问题就出在这第四个参数flags上,应使用PendingIntent.FLAG_UPDATE_CURRENT。
下面是我翻译的PendingIntent下几个常数:
int FLAG_CANCEL_CURRENT 在getActivity()、getBroadCast()、getService()等方法中使用的一个标记:假如所描述的PendingIntent已经存在,则在创建新的PendingIntent之前,将会取消旧的PendingIntent。
int FLAG_NO_CREATE 在getActivity()、getBroadCast()、getService()等方法中使用的一个标记:假如所描述的PendingIntent已经存在,则只是简单的返回null,而不去创建新的PendingIntent对象。
int FLAG_ONE_SHOT 在getActivity()、getBroadCast()、getService()等方法中使用的一个标记:这个PendingIntent对象将只能被使用一次。
int FLAG_UPDATE_CURRENT 在getActivity()、getBroadCast()、getService()等方法中使用的一个标记:假如所描述的PendingIntent已经存在,则该PendingIntent将被保留下来,不过其中的extra数据将会被新的PendingIntent中的extra数据所替代。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值