如果我想创建自定义通讯录(它会覆盖我手机的默认通讯录),并且如果我希望它被所有应用程序使用,我的应该是什么intent-filter
?考虑到这样的第三方应用程序可能是恶意的,Android 是否允许我做这样的事情?!
而且,如果我想要另一个地址簿应用程序,我想第二个应用程序也有相同intent-filter
的,不是吗?如果我在拨打电话时单击联系人按钮,框架如何决定选择哪个应用程序?换句话说,如果多个意图之间存在冲突,框架如何解决意图intent-filters
?
如果我想创建自定义通讯录(它会覆盖我手机的默认通讯录),并且如果我希望它被所有应用程序使用,我的应该是什么intent-filter
?考虑到这样的第三方应用程序可能是恶意的,Android 是否允许我做这样的事情?!
而且,如果我想要另一个地址簿应用程序,我想第二个应用程序也有相同intent-filter
的,不是吗?如果我在拨打电话时单击联系人按钮,框架如何决定选择哪个应用程序?换句话说,如果多个意图之间存在冲突,框架如何解决意图intent-filters
?
您可以替换 Android 平台上的任何应用程序,甚至是 Home。Android 文档解释了有关Intent 和 Intent Filters的所有知识,并且有一个名为Intent Resolution的部分可以回答您的问题。Intent类的 Intent Resolution 部分 有一些附加信息。
据我所知,Android 不会尝试解决冲突。它询问用户要运行哪个应用程序,并让他们选择将此 Activity 标记为此 Intent 的默认值。他们在这里举了一个关于邮件应用程序的例子。
虽然 Smiljanić 先生基本上是正确的,但 Android 中没有可供您替换的联系人应用程序。有 Dialtacts,它是支持联系人、通话记录和拨号器的应用程序。该应用程序无法替换,主要是因为拨号器无法替换。
因此,虽然您可以覆盖一些意图过滤器并控制一些与联系人相关的请求,但您将无法覆盖 Dialtacts 的联系人部分,这会使用户感到困惑。