PendingIntent 如何触发意图?

How PendingIntent triggers intent?

例如,我们有。

PendingIntent pi= PendingIntent.getActivity(context, requestCode, intent, FLAG);

当我们将 pi 对象传递给其他 class 或其他应用程序时,我们知道包装在 pi 中的意图稍后将由该 class 或应用程序触发对吗?

不明白怎么触发?

当我们使用 intent 启动组件 manually/immediately 时,我们调用对应于确切组件类型(startActivity(intent), startService(intent) 等)的方法,据我所知没有像 [=15 这样的方法=]

感谢您的帮助。

P.S. 我想有一种简单的方法可以通过在意图明确时检查 Class 个对象

    Intent intent = new Intent(context, clazz):

在这种情况下系统可以检查是否 clazz.isAssignableFrom(Service.class) 并调用 startService(intent).

但是对于隐含的意图,我无法意识到发生了什么。

当您得到 PendingIntent 时,您可以调用 getActivity()getBroadcast()getService()。创建 PendingIntent 时,Intent 的类型包含在 PendingIntent 中,以便它知道 Intent 是否用于 ActivityBroadcastReceiverService.

稍后,当使用 PendingIntent 时,会调用从 PendingIntent 获取 IntentSender。要实际发送 Intent,将调用 IntentSender.sendIntent()IntentSender 知道 PendingIntent 是如何创建的,因此知道它是否应该使用 startActivity()sendBroadcast()startService() 来正确发送 Intent

注意:

关于您关于如何使用显式 Intents 工作的假设:这行不通,因为通常实际发送 Intent 的应用程序无法访问您的应用程序的代码,因此无法加载您的 类 并且无法使用 Class.isAssignableFrom() 来确定 Intent.

的类型