Фон
Я пытаюсь разработать действительно простое в использовании приложение для замены стандартной версии. По сути, я просто хочу отвечать на входящие звонки и предоставлять пользователю действительно простой пользовательский интерфейс. Там нет необходимости для исходящих звонков или каких-либо модных вещей.
При поиске в сети я обнаружил пакет android.telecom.incallservice
(доступен в API 23). Этот сервис реализуется любым приложением, которое хочет предоставить пользовательский интерфейс для управления телефонными звонками.
Это кажется многообещающим, но у меня проблемы с тем, чтобы заставить его работать. Я создал простой сервис, расширяющий InCallService, и объявил его в своем манифесте, как описано в документации. Тем не менее, я ожидал, что смогу изменить стандартное телефонное приложение в настройках на свое собственное, но я могу найти только стандартное телефонное приложение.
Код
Это декларация манифеста из документов. Я заменил BIND_IN_CALL_SERVICE
на BIND_INCALL_SERVICE
так как полагаю, что это опечатка.
<service android:name="your.package.YourInCallServiceImplementation" android:permission="android.permission.BIND_INCALL_SERVICE">
<meta-data android:name="android.telecom.IN_CALL_SERVICE_UI" android:value="true" />
<intent-filter>
<action android:name="android.telecom.InCallService"/>
</intent-filter>
</service>
Вопросы
-
Возможно ли даже стороннему приложению заменить приложение по умолчанию в приложении вызовов?
-
Есть ли примеры реализаций, использующие этот API, которые я могу использовать в качестве ссылки? Я нашел реализацию Google, но это системное приложение, которое использует некоторые разрешения, которые недоступны для других приложений (например:
android.permission.MODIFY_PHONE_STATE
). -
Правильно ли я полагаю, что после предоставления правильной регистрации манифеста
InCallService
и реализации заглушки я мог ожидать найти мое приложение в разделе "Default Apps → Phone
? Нужно ли декларировать что-то еще?
Благодарю.