42

我有一些代码可以检测何时有新的语音邮件。它基于一个PhoneStateListener.onMessageWaitingIndicatorChanged()实现(因此从技术上讲,它仅在 MWI 指示器发生变化时触发,不一定针对每个新语音邮件)。

在 4.xx 对设备进行更新之前,它已经运行了好几个月。

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

我知道 4.xx 有一个语音邮件提供商 API。认为这可能有连接,我将android.intent.action.NEW_VOICEMAILandandroid.intent.action.PROVIDER_CHANGED意图添加到我的接收器,但它们也不会触发(在我的BroadcastReceiver onReceive)中(我的应用程序的 minSdkVersion 是 8)。

4

2 回答 2

1

这是来自 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 中的Voicemail Provider Demo。我希望这有帮助。

于 2013-08-06T20:21:19.743 回答
0

它确实需要 READ_PHONE_STATE 权限。虽然,如果它在你必须设置它之前工作。

请参阅LISTEN_MESSAGE_WAITING_INDICATOR

于 2013-11-01T13:57:47.060 回答