gpt4 book ai didi

Android - 使用带有通知的未决 Intent

转载 作者:太空狗 更新时间:2023-10-29 14:13:16 28 4
gpt4 key购买 nike

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

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

 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);

我想问一下为什么通知管理器需要提供一个未决的 Intent (为什么它需要我的应用程序的身份来发送一个 Intent )?

为什么不能只给它一个 Intent ?

编辑:请不要回答未决 Intent 的定义。我知道什么是未决 Intent 。我感兴趣的是,为什么通知不能仅使用具有某些 API(例如 startActivity())的正常 Intent 。

最佳答案

Intent 需要上下文。如果您的应用程序没有运行,那么就没有上下文。使用 PendingIntent 允许系统调用具有您的应用程序权限(上下文)的 Intent 。

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

The reason it’s needed is because an Intent must be created and launched from a valid Context in your application, but there are certain cases where one is not available at the time you want to run the action because you are technically outside the application’s context (the two common examples are launching an Activity from a Notification or a BroadcastReceiver.

另见 StackOverflow answer .

关于Android - 使用带有通知的未决 Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24988288/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com