【问题标题】:How does the native android contacts app cater for intents to apps, such as whatsapp原生 android 联系人应用程序如何满足应用程序的意图,例如 whatsapp
【发布时间】:2017-01-07 19:33:40
【问题描述】:

WhatsApp 最近添加了通话功能。在此之前,查看联系人只有一个选项,那就是给联系人发消息。现在可以选择发送消息或呼叫联系人。 WhatsApp 是否将此条目添加到 ContactsContract,或者 Google 是否修改了联系人应用程序以迎合 WhatsApp?我正在尝试制作自定义联系人应用,但我不明白如何在此自定义联系人应用中创建指向应用的链接。

我已经阅读了这个问题,

How to get contacts which are used in whatsapp or other application in android

但解决方案不够通用。我想制作一个没有硬编码应用程序名称的联系人应用程序。

【问题讨论】:

    标签: android contacts contract


    【解决方案1】:

    Android 应用可以在其清单中做广告,它会处理给定操作的隐含意图(请参阅Receiving an implicit intent)。在这种情况下,dial action

    对于您的实际问题 - 您可以使用 PackageManagerquery 哪些活动可以处理意图(在这种情况下,使用 ACTION_DIAL 操作的意图),并使用 PackageManager 获取它们的名称、图标等.

    在 WhatsApp 案例中,您想知道哪些联系人是 WhatsApp 用户,但 WhatsApp 没有 API 或它自己的 ContentProvider。这个2014 blog post solution 可能仍然有效,尚未检查。

    【讨论】:

      【解决方案2】:

      每个应用程序只能指定它们可以处理的 uri scheme 类型,例如 sms://tel:// 。为了清楚起见,应用程序不能在其他一些应用程序中添加自己的条目。

      在您的示例中:
      Contact 应用程序本身的实现方式是列出所有可以处理sms://tel:// 类型的uri scheme 的应用程序。 由于旧版本的 WhatsApp 只能处理 sms:// uri 方案,这就是联系应用程序仅列出 SMS/消息选项的原因。
      除了 WhatsApp 中的呼叫功能,他们还增加了对处理 tel:// uri 方案的支持,这就是联系人应用程序也显示呼叫选项的原因。

      【讨论】:

      • 联系人应用程序如何知道此人是否安装了该应用程序?仅当联系人有 whatsapp 时才会显示 Whatsapp 选项。
      猜你喜欢
      • 1970-01-01
      • 2019-01-18
      • 1970-01-01
      • 2013-07-11
      • 1970-01-01
      • 2021-03-09
      • 1970-01-01
      • 2012-05-28
      • 2012-08-26
      相关资源
      最近更新 更多