PhoneStateListener onMessageWaitingIndicatorChanged()没有被可靠地调用
我有一些代码来检测何时有新的语音信箱。 它基于PhoneStateListener.onMessageWaitingIndicatorChanged()
实现(因此技术上它只在MWI指示符发生变化时触发,不一定针对每个新的语音邮件)。
它已经完美地运行了很多个月,直到4.xx更新到设备。
现在,当设备重新启动时,这是有效的,否则它非常不可靠。 我可以看到通知栏中显示了语音邮件图标,但是onMWIChanged
的debugging日志保持沉默。
我知道4.xx有一个语音邮件提供程序API。 考虑到这可能有一个连接,我添加了android.intent.action.NEW_VOICEMAIL
和android.intent.action.PROVIDER_CHANGED
意图到我的接收器,但他们不会触发(在我的BroadcastReceiver
onReceive
)要么(我的应用程序的minSdkVersion是8 )。
这是Android开发者关于Android 4.0 API的文章。
http://developer.android.com/about/versions/android-4.0.html
如果向下滚动,则会有一段关于语音邮件提供商的部分,其中解释了:
由于API目前不允许第三方应用程序读取系统中的所有语音邮件,因此唯一使用语音邮件API的第三方应用程序是那些有语音邮件提供给用户的应用程序。
但是,我假设您尝试接收来自第三方的语音邮件,而不是您的服务,那么这仍然是可能的。 看看这个有关VoicemailContracts的链接,我相信它说你需要清单中的权限ADD_VOICEMAIL来使用上面使用的操作。
http://developer.android.com/reference/android/provider/VoicemailContract.html
还有一些示例我没有机会看到您的SDK中称为语音邮件提供程序演示 。 我希望这有帮助。
它确实需要READ_PHONE_STATE权限。 虽然,如果它的工作之前,你一定要设置。
请参阅LISTEN_MESSAGE_WAITING_INDICATOR 。