关于在Android 11系统手机上请求READ_PHONE_STATE权限的问题

这篇具有很好参考价值的文章主要介绍了关于在Android 11系统手机上请求READ_PHONE_STATE权限的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

起因是因为bugly报错:

#25004 java.lang.SecurityException

getDataNetworkTypeForSubscriber

1android.os.Parcel.createExceptionOrNull(Parcel.java:2471)

2android.os.Parcel.createException(Parcel.java:2455)

3android.os.Parcel.readException(Parcel.java:2438)

4android.os.Parcel.readException(Parcel.java:2380)

5com.android.internal.telephony.ITelephony$Stub$Proxy.getNetworkTypeForSubscriber(ITelephony.java:9300)

6android.telephony.TelephonyManager.getNetworkType(TelephonyManager.java:2958)

7android.telephony.TelephonyManager.getNetworkType(TelephonyManager.java:2922)

上网查了下,原来在Android11及以上机型上调用telephonyManager.getNetworkType()需要READ_PHONE_STATE权限,于是我就在应用启动时加上了申请该权限的代码,并且在调用getNetworkType()方法的地方加了判断,如果系统版本大于等于11并且没有被授予READ_PHONE_STATE权限,就不调getNetworkType()方法,测试时,发现oppo 11系统手机上请求READ_PHONE_STATE权限时没有弹出请求权限弹窗,而是直接返回被拒绝授予权限的结果,并且在没有被授予READ_PHONE_STATE权限的情况下,调用getNetworkType()方法并没有崩溃,这让我很纳闷,后来经过查询大量资料,找到了11系统手机上请求READ_PHONE_STATE权限时没有弹出请求权限弹窗的原因,就是有些我引入的library manifest文件有这些代码:

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

限制了申请READ_PHONE_STATE权限的最大sdk版本,所以导致在11系统上无法正常申请,所以,在app的manifest文件加入下面这些代码即可解决:

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

另外关于11系统上无READ_PHONE_STATE权限的情况下,调用getNetworkType()方法并没有崩溃的问题,我还没有找到答案,估计是手机厂商对底层代码做了修改吧文章来源地址https://www.toymoban.com/news/detail-518636.html

到了这里,关于关于在Android 11系统手机上请求READ_PHONE_STATE权限的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • fiddler抓取Android手机app发送的请求

    场景:需要抓取手机APP发送的请求 1.下载安装fiddler 网址:https://www.telerik.com/download/fiddler-everywhere 2. 配置fiddler a.工具栏选择Tools–Options–Connections,勾选Allow remote computers to connect,如下图示: b.如果需要抓取https的请求,需要配置HTTPS如下图示: 3.安装证书 电脑、手机均需要

    2024年02月09日
    浏览(60)
  • Android S 修改关于手机的logo

    1.让图片加载生效 frameworks/base/packages/SettingsLib/LayoutPreference/res/layout/preference_about_phone.xml LinearLayout     xmlns:android=\\\"http://schemas.android.com/apk/res/android\\\"     android:id=\\\"@+id/entity_header\\\"     style=\\\"@style/EntityHeader\\\"     android:layout_width=\\\"match_parent\\\"     android:layout_height=\\\"wrap_content\\\"        

    2024年02月13日
    浏览(40)
  • 解锁 Android 手机的11大有效技巧

    想了解如何在没有密码或图案的情况下解锁 Android 智能手机吗?按照以下 10 大最佳技巧解锁 Android 手机。 人们很可能会在智能手机上应用屏幕锁定图案或密码以保护隐私。为防止其他人访问您的手机和您的个人数据,设置屏幕锁定密码或图案至关重要。内置的模式锁定工具

    2024年02月09日
    浏览(45)
  • 关于Android 11、12和13服务保活问题

    物联网环境,为了解决不同厂商、不同设备、不同网络情况下使用顺畅,同时也考虑到节约成本,缩小应用体积的好处,我们需要一个服务应用一直存在系统中,保活它以提供服务给其他客户端调用。 开机自启动,通过广播通信, 必要权限 开机自启动Service相关代码 注意

    2023年04月08日
    浏览(86)
  • 实现手机app和微信小程序和树莓派智能音箱远程控制arduino获取甲醛温湿度和控制灯(esp8266 ZE08-CH2O DHT11 MQTT 语音识别 语言合成 http请求转串口通信系统 )

    首先你有这样的esp8266 这种esp8266自身带2个按键和烧录芯片方便调试,综合性价比较高。 需要有一个arduino uno 连接甲醛探测器和温湿度探测器 或者其他芯片都行。 还有就是你要有树莓派和usb麦克风,用来实现智能音箱,有了这3个开发板我们开始吧! https://www.bilibili.com/video

    2024年02月14日
    浏览(53)
  • mitmproxy 抓包神器-2.抓取Android 和 iOS 手机 https 请求

    抓取手机请求的前提条件是确保手机和电脑在同一网段上,也就是说使用同一WiFi。 mitmweb 命令启动服务,默认监听8080端口 开启代理,设置监听8080端口,点保存按钮 打开手机设置-WIFI-长按你的wifi-修改网络-代理选择手动 输入服务器主机名和IP,服务器主机名就是自己电脑本

    2024年02月11日
    浏览(50)
  • Fiddler如何抓取手机http/https请求数据包(IOS,Android保姆级教程)

    1.开启Fiddler远程连接 2.设置完远程连接,重启Fiddler,更新配置 3.保持手机和电脑在同一个局域网 4.给手机装证书 5.点击下载证书 6.给证书命名 7.点击确定,确认安装成功 Fiddler主菜单Tools -- Options -- Connections -- 勾选 Allow remote computers to connect 弹出的框是确认启用远程连接,配置

    2024年02月04日
    浏览(40)
  • Android 11.0 framework关于systemUI定制之导航栏透明背景的功能实现

    在11.0的系统rom产品定制化开发中,在对于系统原生SystemUI的导航栏背景在沉浸式导航栏的 情况下默认是会随着背景颜色的变化而改变的,在一些特定背景下导航栏的背景也是会改变的,所以由于产品开发需要 要求需要设置导航栏背景为透明的,所以就需要在Activity创建的时候

    2024年02月04日
    浏览(56)
  • 手机无法访问”xxx”目录(Android 11及以上授予文件管理权限)的解决方法

    Android11改变了此前安卓系统对文件管理的规则,在Android11上,文件读写变成了特殊权限。应用默认只能读写自己的目录/android/data/包名,这就导致我们想修改某个文件里的内容,结果却没有读写权限。本文主要提供一种解决方法——root+adb。 进入adb+ROOT权限开启 我们进入 adb s

    2024年02月16日
    浏览(62)
  • 关于 Delphi 11.3跨平台开发Android调用 JNI JAR java 的说明和注意事项

    关于 调用 JNI JAR 的说明和注意事项,调用第三方 JAR SDK 和 翻译 安卓 JAVA 代码 的说明 V2017.10.18 (* ************************************************ *) (* *) (* *) (* 设计:爱吃猪头肉 Flying Wang 2015-04-15  *) (* 上面的版权声明请不要移除。 *) (* *) (* ************************************************ *) 本人所

    2024年02月07日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包