我有一些代码可以检测到何时有新的语音邮件。它基于PhoneStateListener.onMessageWaitingIndicatorChanged()
实现(因此从技术上讲,只有在MWI指标发生变化时才会触发,而不是每个新的语音邮件都会触发)。
在设备更新4.x.x之前,它已经工作了好几个月。
现在,这在设备重启时有效,否则非常不可靠。我可以看到语音邮件图标出现在通知栏中,但onMWIChanged
中的调试日志保持沉默。
我知道4.x.x有一个语音邮件提供程序API。考虑到这可能存在关联,我将android.intent.action.NEW_VOICEMAIL
和android.intent.action.PROVIDER_CHANGED
意图添加到我的接收器中,但它们也不会触发(在我的BroadcastReceiver
onReceive
中)(我的app的minSdkVersion是8)。
答案 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权限。虽然,如果它必须在你设定之前有效。