需要android.permission.READ_PHONE_STATE权限的是哪种Android应用程序?

29
我在我的手机上看到一些Android应用程序需要“android.permission.READ_PHONE_STATE”权限。 我不知道是否可以信任它们。 我知道这个权限会让应用程序访问许多信息。 我特别想知道一个Android应用程序通常需要像“DeviceId”,“SimSerialNumber”,“SubscriberId”之类的信息来完成什么功能?

请参考 https://dev59.com/oGw05IYBdhLWcg3wiyVJ 以查看示例用法。 - Michael Barany
3个回答

23

21

另一个可能的原因是,当你正在通话时,他们可以静音音频事件。这就是为什么像 Pandora、Spotify 等应用程序需要此权限——以便在你接到电话时将自己静音。


没错。问题在于Android权限太粗糙了——一个应用程序只需要知道通话正在进行中,以便将其静音,而不需要知道连接的号码或用户手机的IMEI。有一个Android问题要拆分此权限,当电话来时有一种更好的静音音频的方法,不需要任何权限-onAudioFocusChange - Dan Dascalescu

2

不久前,我发现如果您的应用程序发送短信,则应为某些设备添加android.permission.READ_PHONE_STATE。可能在某些情况下,SmsManager在发送短信之前尝试检索有关手机状态的某些信息。

例如,对于华为GRA-L09,会出现异常:

java.lang.SecurityException: Requires READ_PHONE_STATE: Neither user 10174 nor current process has android.permission.READ_PHONE_STATE.
at android.os.Parcel.readException(Parcel.java:1543)
at android.os.Parcel.readException(Parcel.java:1496)
at com.android.internal.telephony.ISms$Stub$Proxy.s! endMultipartTextForSubscriber(ISms.java:1224)
at android.telephony.SmsManager.sendMultipartTextMessage(SmsManager.java:404)

2
我遇到了同样的问题,你有什么建议吗?我认为仅在需要发送短信的某些情况下请求此主要权限是一个问题。 - Tomer Petel
@TomerPetel,你有没有找到解决这个问题的方法?实际上我正在开发一个短信应用程序作为我的大学项目,但我遇到了这个问题,我的应用在Oreo上崩溃,而杀毒软件不允许在KitKat上打开并发送短信。 - Arsh Kaushal
@ArshKaushal 不,我没有找到解决方案。我只是将它放在try/catch子句中,并尝试使用其他共享意图(即SMS不起作用的情况下)来尝试替代方法。 - Tomer Petel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接