42 votes

PhoneStateListener onMessageWaitingIndicatorChanged () n'est pas appelé de manière fiable

J'ai un code qui permet de détecter si il y a un nouveau message vocal. Il est basé sur un PhoneStateListener.onMessageWaitingIndicatorChanged() mise en œuvre (et donc techniquement il se déclenche uniquement lorsque le MWI indicateur de changements, pas nécessairement pour chaque nouveau message vocal).

Il a été fonctionne parfaitement pendant plusieurs mois jusqu'à 4.x.x mises à jour pour les appareils.

Maintenant, cela fonctionne lorsque l'appareil est redémarré, sinon sa de très peu fiables. Je peux voir le message vocal, l'icône apparaît dans la barre de notification, mais les journaux de débogage en onMWIChanged rester silencieux.

Je sais que 4.x.x il y a un fournisseur de messagerie vocale de l'API. La pensée que cela pourrait avoir un lien, j'ai ajouté de l' android.intent.action.NEW_VOICEMAIL et android.intent.action.PROVIDER_CHANGED d'intentions de mon récepteur, mais ils n'ont pas le feu (dans mon BroadcastReceiver onReceive) soit (mon application minSdkVersion est de 8).

1voto

rhite1 Points 91

C'est un poste de Développeurs Android sur l'Android 4.0 Api.

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

Si vous faites défiler vers le bas il y a une section sur les Fournisseurs de messagerie Vocale où il explique:

Parce que les Api ne sont actuellement pas permettre à un tiers d'apps pour lire tous les messages du système, les seules applications tierces qui devrait utiliser la messagerie vocale Api sont ceux qui ont la messagerie vocale de livrer à l'utilisateur.

Cependant, je suppose que si vous essayez de recevoir des messages vocaux à partir d'un tiers, et non à partir de votre service, alors ce peut-être encore possible. Consultez ce lien sur VoicemailContracts où je crois qu'il dit, il faut la permission ADD_VOICEMAIL dans votre manifeste, d'utiliser les actions que vous utilisez ci-dessus.

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

Il y a aussi des échantillons que je n'ai pas eu la chance de regarder appelé Fournisseur de messagerie Vocale Démo dans votre SDK. J'espère que cette aide.

0voto

James Points 3

Il nécessite l'autorisation READ_PHONE_STATE. Bien que, si cela a fonctionné avant, vous devez l’avoir réglé.

Voir LISTEN_MESSAGE_WAITING_INDICATOR .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: