PhoneStateListener onMessageWaitingIndicatorChanged()未被可靠调用

时间:2013-03-21 14:41:36

标签: android voicemail

我有一些代码可以检测到何时有新的语音邮件。它基于PhoneStateListener.onMessageWaitingIndicatorChanged()实现(因此从技术上讲,只有在MWI指标发生变化时才会触发,而不是每个新的语音邮件都会触发)。

在设备更新4.x.x之前,它已经工作了好几个月。

现在,这在设备重启时有效,否则非常不可靠。我可以看到语音邮件图标出现在通知栏中,但onMWIChanged中的调试日志保持沉默。

我知道4.x.x有一个语音邮件提供程序API。考虑到这可能存在关联,我将android.intent.action.NEW_VOICEMAILandroid.intent.action.PROVIDER_CHANGED意图添加到我的接收器中,但它们也不会触发(在我的BroadcastReceiver onReceive中)(我的app的minSdkVersion是8)。

2 个答案:

答案 0 :(得分:1)

这是Android开发者关于Android 4.0 API的帖子。

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

如果您向下滚动,则会有一个关于语音邮件提供商的部分,其中说明了这一点:

由于API目前不允许第三方应用程序读取系统中的所有语音邮件,因此应该使用语音邮件API的唯一第三方应用程序是那些将语音邮件传递给用户的应用程序。 / em>

但是,我假设您尝试接收来自第三方的语音邮件,而不是来自您的服务,那么这仍然是可能的。查看有关VoicemailContracts的链接,我相信它表示您需要在清单中使用 ADD_VOICEMAIL 权限才能使用您上面使用的操作。

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

还有一些示例我没有机会在您的SDK中查看名为语音邮件提供商演示的内容。我希望这会有所帮助。

答案 1 :(得分:0)

它需要READ_PHONE_STATE权限。虽然,如果它必须在你设定之前有效。

请参阅LISTEN_MESSAGE_WAITING_INDICATOR