Android 动态申请权限
Posted OneDay-X
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 动态申请权限相关的知识,希望对你有一定的参考价值。
无法读取文件
在android开发中,API23或以上版本读写文件时可能会出现如下错误:
open failed: EACCES (Permission denied)
或者无法正常读取文件即使你已经在注册文件AndroidManifest.xml中添加了相应的读写权限。
原因在于API23或以上版本需要进行动态权限申请,具体申请过程如下:
动态申请权限
在需要申请权限的Activity中添加一个权限申请函数:
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE =
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
;
public static void verifyStoragePermissions(Activity activity)
// Check if we have write permission
int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED)
// We don't have permission so prompt the user
ActivityCompat.requestPermissions(
activity,
PERMISSIONS_STORAGE,
REQUEST_EXTERNAL_STORAGE
);
同时,此时仍然需要在注册文件AndroidManifest.xml文件中进行权限静态申请:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
注意,将其放在<application>标签之外。
最后,就可以在该Activity中通过调用函数verifyStoragePermissions(this)进行权限动态申请,从而达到可以读取文件的目的。
以上是关于Android 动态申请权限的主要内容,如果未能解决你的问题,请参考以下文章