gpt4 book ai didi

android - TelephonyManager.getCellLocation 在某些设备中崩溃请求 READ_PHONE_STATE 权限

转载 作者:行者123 更新时间:2023-11-30 00:34:15 24 4
gpt4 key购买 nike

我们在我们的应用程序中使用 TelephonyManager 中的 getCellInfo 方法,它工作正常,没有任何问题,除了极少数设备崩溃并显示以下消息

java.lang.SecurityException: Requires READ_PHONE_STATE: Neither user 10215 nor current process has android.permission.READ_PHONE_STATE

但是,文档并未说明我们需要此权限才能调用此方法。此外,我们根本不要求获得此许可。有没有人遇到过这个问题。我猜这可能是权限本身的普遍问题?我们的目标是 sdk 版本 22,minSdkVersion 是 15。

最佳答案

我的应用在使用 TelephonyManager 时遇到了同样的问题。它的targetSdkVersion是27,minSdkVersion是17。

根据来自 Google Play 控制台的我的应用程序的崩溃报告,存在此 SecurityException 问题的手机是 Oppo、LG、Asus 和 Sony 手机,它们的 Android 5.0-5.1。之后,我使用 Android 5.0 和 5.1 在 Android Studio 的模拟器上运行我的应用程序。我发现它会因为没有READ_PHONE_STATE权限而崩溃。

因此,我认为这个问题会发生在大多数Android 5.0或5.1的设备上,不会出现在手机品牌上。

解决方法是在AndroidManifest.xml中添加如下代码:

<uses-permission android:name="android.permission.READ_PHONE_STATE" android:maxSdkVersion="22"/>

我把这个权限的maxSdkVersion设置为22,因为Android 6.0以后不会出现这个SecurityException,所以Android 6.0以上的手机不需要这个权限。

关于android - TelephonyManager.getCellLocation 在某些设备中崩溃请求 READ_PHONE_STATE 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43687607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com