Intereting Posts
Как я могу позволить пользователям получить доступ к внутреннему каталогу хранения моего приложения? Как поместить значения из текстового представления в строку списка в фрагмент Как бороться с устаревшими классами в Android для обеспечения совместимости Расположение координатора, активность ниже панели инструментов @Injects после @Produces? Как интегрировать SIP в Android? Как я могу обнаружить сфокусированный EditText в android? Установка com: android: поддержка: процент: 22.2.1 библиотека не работает в Android Studio Не удалось запустить Android Virtual Device Manager «android avd», получая NullPointerException Эмулятор для галактики s3 Тема Holo не применяется к диалогам при использовании библиотеки holoeverywhere Android: невозможно загрузить из магазина воспроизведения Использование нескольких сетевых интерфейсов в приложении Предотвращение поворота экрана на Android Запрос на однократное обновление местоположения, сбой AVD

PhoneStateListener onMessageWaitingIndicatorChanged () не называется надежно

У меня есть код, который обнаруживает, когда появляется новая голосовая почта. Он основан на реализации PhoneStateListener.onMessageWaitingIndicatorChanged() (так что технически он срабатывает только при изменении индикатора MWI, не обязательно для каждой новой голосовой почты).

Он работает отлично в течение многих месяцев до обновления 4.xx для устройств.

Теперь это работает, когда устройство перезагружается, в противном случае оно очень ненадежно. Я вижу, что значок голосовой почты появляется на панели уведомлений, но журналы отладки onMWIChanged остаются безмолвными.

Я знаю, что с 4.xx существует API-провайдер voicemail. Думая, что это может иметь соединение, я добавил android.intent.action.NEW_VOICEMAIL и android.intent.action.PROVIDER_CHANGED для моего получателя, но они не срабатывают (в моем BroadcastReceiver onReceive ) либо (мое приложение minSdkVersion равно 8 ).

    Это сообщение от разработчиков Android о API 4.0 для Android.

    http://developer.android.com/about/versions/android-4.0.html

    Если вы прокрутите вниз, появится раздел о Провайдерах голосовой почты, где он объясняет:

    Поскольку API в настоящее время не позволяет сторонним приложениям читать все голосовые сообщения из системы, единственными сторонними приложениями, которые должны использовать API-интерфейсы голосовой почты, являются те, у которых есть голосовая почта для доставки пользователю.

    Тем не менее, я предполагаю, что если вы пытаетесь получать голосовые сообщения от третьего лица, а не от своей службы, это может быть возможно. Просмотрите эту ссылку о VoicemailContracts, где я считаю, что вам нужно разрешение ADD_VOICEMAIL в вашем манифесте, чтобы использовать действия, которые вы используете выше.

    http://developer.android.com/reference/android/provider/VoicemailContract.html

    Есть также образцы, на которых у меня не было возможности посмотреть демоверсию Voicemail Provider в вашем SDK. Надеюсь, это поможет.

    Для этого требуется разрешение READ_PHONE_STATE. Хотя, если это сработало, прежде чем вы это сделаете.

    См. LISTEN_MESSAGE_WAITING_INDICATOR .