例如,我们有。
PendingIntent pi= PendingIntent.getActivity(context, requestCode, intent, FLAG);
当我们将 pi
对象传递给其他类或其他应用程序时,我们知道包装在 pi
中的 Intent 稍后会被该类或应用程序触发,对吗?
不明白会怎么触发?
当我们使用 intent 手动/立即启动组件时,我们调用对应于确切组件类型的方法(startActivity(intent)、startService(intent)
等),据我所知有没有像 startAnyComponent(intent).
感谢您的帮助。
附言 我想有一种简单的方法可以通过在 Intent 明确时检查 Class 对象
Intent intent = new Intent(context, clazz):
在这种情况下,系统可以检查 clazz.isAssignableFrom(Service.class)
并调用 startService(intent)。
但对于隐式 Intent ,我无法意识到发生了什么。
最佳答案
当您获得 PendingIntent
时,您可以调用 getActivity()
、getBroadcast()
或 getService()
。当创建 PendingIntent
时,Intent
的类型包含在 PendingIntent
中,以便它知道 Intent
用于 Activity
、BroadcastReceiver
或 Service
。
稍后,当使用 PendingIntent
时,会调用从 PendingIntent
获取 IntentSender
。要实际发送 Intent
,将调用 IntentSender.sendIntent()
。 IntentSender
知道 PendingIntent
是如何创建的,因此知道它是否应该使用 startActivity()
、sendBroadcast()
或 startService()
以正确发送 Intent
。
注意:
关于您关于如何使用显式 Intent
工作的假设:这是行不通的,因为通常实际发送 Intent
的应用程序没有访问您应用的代码,因此无法加载您的类,也无法使用 Class.isAssignableFrom()
确定 Intent
的类型。
关于android - PendingIntent 如何触发 Intent ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55569587/