Как собственное приложение для контактов Android обслуживает намерения приложений, таких как WhatsApp

WhatsApp недавно добавил функцию вызова. До этого при просмотре контакта был только один вариант — отправить контакту сообщение. Теперь есть возможность отправить сообщение или позвонить контакту. Добавил ли WhatsApp эту запись в ContactsContract или Google изменил приложение контактов, чтобы оно соответствовало WhatsApp? Я пытаюсь создать настраиваемое приложение для контактов, но не понимаю, как создавать ссылки на приложения из этого настраиваемого приложения для контактов.

Я прочитал этот вопрос,

Как получить контакты которые используются в WhatsApp или другом приложении на Android

Но решение недостаточно универсальное. Я хочу создать приложение для контактов, в котором нет жестко закодированных имен приложений.


person Yoker    schedule 07.01.2017    source источник


Ответы (2)


Приложение Android может рекламировать в своем манифесте, что оно обрабатывает неявное намерение для данного действия (см. ">Получение неявного намерения). В данном случае это действие по набору номера.

И на ваш практический вопрос - вы можете использовать PackageManager для запрос какие Действия могут обрабатывать намерение (в данном случае намерение с действием ACTION_DIAL) и использовать PackageManager для получения их имени, значка и т. д.

В случае с WhatsApp вы хотели бы знать, какие контакты являются пользователями WhatsApp, но у WhatsApp нет API или собственного ContentProvider. Этот сообщение в блоге 2014 г. решение может быть еще действительным, не проверял.

person Yoni Gross    schedule 20.01.2017

Каждое приложение может указать только тип uri scheme, который они могут обрабатывать, например sms:// или tel://. Для ясности, приложения не могут добавлять запись о себе в некоторые другие приложения.

В вашем примере:
Само приложение «Контакт» реализовано таким образом, что в нем перечислены все приложения, которые могут обрабатывать sms:// или tel:// тип uri scheme. Поскольку более старая версия WhatsApp может обрабатывать только схему sms:// uri, поэтому приложение «Контакты» отображает только вариант SMS / сообщения.
Кроме того, с функцией вызова в WhatsApp они добавили поддержку обработки схемы tel:// uri, поэтому приложение Contact также показывает параметр вызова.

person Akhilesh Kumar    schedule 18.01.2017
comment
Как приложение контактов узнает, установлено ли приложение у человека? Опция WhatsApp отображается только в том случае, если у контакта есть WhatsApp. - person Yoker; 19.01.2017