【发布时间】:2017-02-03 06:55:30
【问题描述】:
用户报告我的应用程序崩溃并出现此错误跟踪
java.lang.SecurityException: com.android.phone from uid 10134 not allowed to perform OP_READ_PHONE_STATE
at android.os.Parcel.readException(Parcel.java:1620)
at android.os.Parcel.readException(Parcel.java:1573)
at com.android.internal.telephony.IPhoneSubInfo$Stub$Proxy.getVoiceMailNumberForSubscriber(IPhoneSubInfo.java:858)
at android.telephony.TelephonyManager.getVoiceMailNumber(TelephonyManager.java:2383)
at android.telephony.TelephonyManager.getVoiceMailNumber(TelephonyManager.java:2366)
到目前为止,只有一位用户报告了此问题。数千名其他用户正在运行此版本的应用程序,没有出现明显问题。
当我们调用TelephonyManager.getVoiceMailNumber() 时抛出异常。此操作已按要求记录了READ_PHONE_STATE 权限,该权限已被绝对、肯定地授予。
我找到了OP_READ_PHONE_STATE 对android.apps.AppOpsManager 类的权限,但无法弄清楚它到底对什么不满意。
谁能解释正在发生的事情以及需要做些什么来解决问题。
谢谢, -肯
【问题讨论】:
-
您是否检查了 read_phone_state 的运行时权限?他们是否可以通过应用设置或 cyanogenmod(或类似工具)手动删除您的权限?
-
代码在执行 getVoiceMailNumber() 调用之前检查标准的 READ_PHONE_STATE 权限。应用程序生成的支持电子邮件列出了所有未授予的请求权限。该列表中未报告 READ_PHONE_STATE。我几乎可以肯定 READ_PHONE_STATE 权限已被授予dd。
-
疯了很久以前就看到了。我们现在看到很多这样的东西,只有三星,而且只有那些运行牛轧糖的人。
-
我在搭载 Android 7 的三星 S8/S8+ 上也看到了这一点。你知道这是否主要是一个承运人而不是另一个承运人?
-
它还在发生吗?有人可以确认吗?三星很烂!
标签: android security android-permissions android-6.0-marshmallow