[Android Studio]详细讲解Android6.0以上请求应用权限(解决请求权限窗口一闪而过的问题)

本文详细讲述了在Android 6.0及以上版本如何处理权限请求,特别是在AndroidManifest.xml中添加权限后,解决请求权限窗口一闪而过的问题。文章通过实例代码解释了如何在运行时检查和请求危险权限,如READ_EXTERNAL_STORAGE,以及如何处理onRequestPermissionsResult()回调。
摘要由CSDN通过智能技术生成

现在的主流手机的Android版本都是8.0/9.0(笔者的华为手机为9.0),所以在开发Android的时候尽量使用Android8.0的版本(SDK 26)。随着Android版本的提升,系统的安全性得到了加强,但是同时增加了开发的难度。Android6.0以上请求应用权限就是一个例子。

笔者以获取读取外部储存为例,实现从系统相册获取图片的功能。在调用系统相册API的时候不需要读取外部储存的权限,但是将从系统相册获取的图片显示时需要。

我在实现调用系统相册时,使用了Android 调用系统相册选择图片并显示中的代码,在此感谢该博客作者。

经过简单的CTRL+C、CTRL+V后,我成功运行了代码,并且成功的调用了系统相册。

但是在选择图片并点击“✓”后,主屏幕没有出现任何变化,并没有像想象中的出现选择的图片。

然后我注意到该博客的作者在代码中备注了要加上这样一个获取权限的代码:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

目的:获取外部储存的读取权限。

增加方法:在AndroidManifest.xml中的下图所示位置增加

 但是即便这样,也无法将从相册获取的图片显示。在调试时,发现选择图片并点击“✓”后报出了这样的错误:

这里的错误信息说明找不到该图片,但是后面的“/storage/...”中正是该图片的路径。这告诉我问题不是出在相册上(相册能正确的获取图片的路径),而是出在应用的权限上。

 

解决问题的过程:

这时我回想起来一个我们用Android手机时经常遇到的情况。每当下载一个新的app时,它会在你安装的时候请求权限,但是你是否对下面的图片有印象:

既然能在安装时请求权限,那为什么还要在运行程序时请求一遍呢。而且很多应用在你拒绝某些权限后会直接闪退。

通过查找资料,我终于在博客一行代码搞定Android 6.0动态权限申请中找到了原因

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值