Контекст
Я реализую RCC , и, как видно из этой спецификации GSMA, мне нужно иметь возможность обнаруживать изменения в номеронабирателе по умолчанию.
В соответствии с разделом спецификации B.1.1:
В версии ОС Android ™ выше или равной 7.0, (...) получать уведомления об изменениях приложения SMS по умолчанию и DefaultСмена номеронабирателя, клиент RCS должен прослушивать трансляцию Android ™ Intents: «ACTION_DEFAULT_SMS_PACKAGE_CHANGED». «ACTION_DEFAULT_DIALER_CHANGED»
В настоящее время я использую TelecomManager.ACTION_DEFAULT_DIALER_CHANGED
в примере проекта, подобном следующему:
<receiver android:name="BroadcastTest">
<intent-filter>
<action android:name="android.telecom.action.DEFAULT_DIALER_CHANGED"/>
</intent-filter>
</receiver>
Класс BroadcastTest
- это пустой BroadcastReceiver
, которыйпечатает журнал.
Проблема
При обновлении приложения для набора номера в Настройках в приемнике не принимается передача. Я пытался играть с приоритетом, но безуспешно. Я получаю широковещательную рассылку, если запрос был сделан приложением, однако мне нужно выполнить некоторые действия, если пользователь тоже изменил настройки (или с помощью другого приложения).
Похоже, этошироковещательная рассылка не отправляется, что затрудняет реализацию этой спецификации.
У рассматриваемого приложения есть разрешения на вызов. Широковещательная рассылка не принимается, независимо от того, является ли приложение номеронабирателем по умолчанию.
Обходной путь
Я нашел обходной путь, который включает в себя регистрацию обозревателя контента для уведомления об изменениях в dialer_default_application
URI (content://settings/secure/dialer_default_application
).
Однако, как определено в спецификации, мы должны получать эту трансляцию
Вопрос
Я что-то не так делаю при реализации этой трансляции? Кто-нибудь получает эту трансляцию (возможно, проблема с конкретным устройством)? Есть ли какие-либо проблемы в использовании обходного решения (dialer_default_application
- это скрытая константа в Settings.Secure
)?