获取READ_PHONE_STATE权限的替代方法,以获得通知

时间:2014-06-23 20:23:25

标签: android

我目前正在使用Android中的READ_PHONE_STATE权限在有通话时暂停我的媒体播放器,并在通话结束时恢复播放。许可似乎吓到了很多人,所以我想知道是否有一种替代方案可以在没有它的情况下接听电话的启动和停止。任何帮助表示赞赏。谢谢!

3 个答案:

答案 0 :(得分:4)

如果您想调整音频输出以响应想要执行音频输出的其他内容(例如来电),请查看Android的audio focus support。 如上所述,READ_PHONE_STATE是一种可怕的许可。此外,它只处理电话呼叫,而不处理可能需要相同功能的其他事项(例如,VOIP呼叫,因为AFAIK不支持READ_PHONE_STATE启用的功能。)

答案 1 :(得分:-1)

不幸的是,音频焦点不能替代READ_PHONE_STATE。我的应用程序必须使用两者。我的Galaxy S3 I9300 / Android 4.3上的标准手机应用程序似乎根本不需要音频焦点。 TelephonyManager类为您提供了一种检测电话呼叫结束的方法(通过发送CALL_STATE_IDLE状态更新)。 AudioManager似乎没有做任何类似的事情,所以即使可以使用音频焦点,它也不会那么有用。而且,从我在文档中看到的,似乎没有比READ_PHONE_STATE更窄的权限,允许应用程序读取电话状态而不是呼叫信息。如果我对此有任何不妥之处,请纠正我。

答案 2 :(得分:-1)

不幸的是,音频焦点不能替代READ_PHONE_STATE。我的应用程序必须使用两者。我的Galaxy S3 I9300 / Android 4.3上的标准手机应用程序似乎根本不需要音频焦点。 TelephonyManager类为您提供了一种检测电话呼叫结束的方法(通过发送CALL_STATE_IDLE状态更新)。 AudioManager似乎没有做任何类似的事情,所以即使可以使用音频焦点,它也不会那么有用。而且,从我在文档中看到的,似乎没有比READ_PHONE_STATE更窄的权限,允许应用程序读取电话状态而不是呼叫信息。如果我对此有任何不妥之处,请纠正我。