我知道在系统中注册并且可以从任何应用程序调用的公共(命名)意图和在单个应用程序中使用的私有(匿名)意图。请任何人都可以给我一个更好的理解的例子。
提前致谢
Android 文档可能是解释它的最佳工作,这里有一个相关的片段:
您将使用两种主要形式的意图。
显式意图指定了一个组件(通过 setComponent(ComponentName) 或 setClass(Context, Class)),它提供了要运行的确切类。通常这些不会包含任何其他信息,只是作为应用程序在用户与应用程序交互时启动其具有的各种内部活动的一种方式。
隐式意图没有指定组件;相反,它们必须包含足够的信息,以便系统确定哪些可用组件最适合为该意图运行。当使用隐式意图时,给定这样一个任意意图,我们需要知道如何处理它。
这由 Intent 解析过程处理,该过程将 Intent 映射到可以处理它的 Activity、BroadcastReceiver 或 Service(有时是两个或多个 Activity/接收器)。
您在活动中使用的显式意图来启动内部活动。
虽然隐式意图通常用于启动其他活动,例如当您想要共享链接或发送电子邮件时,但您发送隐式意图并让用户决定使用电子邮件客户端发送电子邮件或共享链接。
在某些情况下,您可能希望使用隐式意图来运行应用程序的内部组件,因为它似乎更稳定。
抱歉没有时间写完整的答案,但您可以创建自定义权限以签署您的Intents
& BroadcastReceivers
。
当您使用这些自定义权限时,只有使用相同签名密钥签名并包含该自定义权限的应用程序才能看到这些 Intent。
这个问题可能会帮助你:
@Commonsware 在最近的一篇博文中很好地解释了这个问题: