AndroidSDK29+读取存储权限问题
背景:在Android api 29的环境下,播放内存中的视频
androidsdk安装步骤
1.在Manifest⽂件中添加 静态权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
2.在代码中添加动态获取权限的代码,并在Activity函数中调⽤。
private static final int REQUEST_EXTERNAL_STORAGE =1;
private static String[] PERMISSIONS_STORAGE ={
"android.permission.READ_EXTERNAL_STORAGE",
"android.permission.WRITE_EXTERNAL_STORAGE"};
public static void verifyStoragePermissions(Activity activity){
try{
//检测是否有写的权限
int permission = ActivityCompat.checkSelfPermission(activity,
"android.permission.WRITE_EXTERNAL_STORAGE");
if(permission != PackageManager.PERMISSION_GRANTED){
// 没有写的权限,去申请写的权限,会弹出对话框
System.out.println("here1 ");
}else{
System.out.println("here2 ");
}
}catch(Exception e){
e.printStackTrace();
}
}
注意,⼤多数博客就通过上⾯两个步骤就可以让软件获得读取内存的权限,但是,在SDK 29的情况下,仍被拒绝访问,报错 Log 如下:    Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied)
那么怎么解决呢,查阅了资料发现,需要在Manifest中 application 添加:
android:requestLegacyExternalStorage="true"
⾄此,才能成功获取内存读取权限。
参考官⽅ issues 连接:
本⽂是基于⽹络上的代码改写,若有版权问题请联系。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。