Android - 使用带有通知的待处理意图

时间:2014-07-28 04:08:40

标签: android android-intent android-pendingintent

我正在阅读有关未决意图的tutorial以及它如何与通知管理器一起使用。

在该页面中,提到了以下代码:

 Intent intent = new Intent(this, NotificationReceiverActivity.class);
 PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);

 Notification noti = new Notification.Builder(this)
    .setContentTitle("New mail from " + "test@gmail.com")
    .setContentText("Subject").setSmallIcon(R.drawable.icon)
    .setContentIntent(pIntent)
    .addAction(R.drawable.icon, "Call", pIntent)
    .addAction(R.drawable.icon, "More", pIntent)
    .addAction(R.drawable.icon, "And more", pIntent).build(); 


 NotificationManager notificationManager = 
     (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

 // hide the notification after its selected
 noti.flags |= Notification.FLAG_AUTO_CANCEL;

 notificationManager.notify(0, noti);

我想问为什么通知管理员需要提供待处理的意图(为什么它需要我的应用程序的身份来发送意图)?

为什么不能给出意图呢?

修改:请不要回答未决意图的定义。我知道未决的意图是什么。我感兴趣的是为什么通知只能使用像startActivity()这样的API的正常意图。

1 个答案:

答案 0 :(得分:1)

Intent需要一个上下文。如果您的应用程序没有运行,则没有上下文。使用PendingIntent允许系统使用您的应用程序的权限(上下文)调用intent。

来自http://www.simplecodestuffs.com/what-is-pending-intent-in-android/

  

需要的原因是   因为必须从有效的Context中创建并启动Intent   你的申请,但在某些情况下,其中一个不是   在您想要运行操作时可用,因为您是   技术上不在应用程序的上下文中(两个常见的例子   从通知或BroadcastReceiver启动活动。

另见StackOverflow answer