前言
Android从API23开始, 也就是Android6.0起, 有了一个动态申请权限的概念. 这里就分享给大家一个util来解决这个问题. 不过在代码之前我还有些要说的:
第一次安装应用进入之后会要权限. 一般来说, 这个要权限都会在广告页之后, 进主页面之前, 因为如果不在进入之前拿到权限, 肯定有些功能就跑不动了, 仔细看图片后面的界面, 只显示了根路径, 下面为空. 那再给一张点击了allow重进的图片:
使用
直接上代码:
public class PermissionsUtil { // 读写权限 private static final int REQUEST_EXTERNAL_STORAGE = 1; private static String[] PERMISSIONS_STORAGE = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}; /** * 检查应用程序是否有权写入设备存储 * 如果应用程序没有权限,则会提示用户授予权限 * * @param activity 所在的Activity */ public static void verifyStoragePermissions(Activity activity) { // 检查应用程序是否有权写入设备存储 int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE); if (permission != PackageManager.PERMISSION_GRANTED) { // 如果应用程序没有权限,则会提示用户授予权限 ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE); } }}复制代码
然后在前言说的位置:
verifyStoragePermissions(this);复制代码
/** * @param requestCode 请求码 * @param permissions 权限 * @param grantResults 授予结果 */@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode) { case 1: if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { LogUtil.i(getResources().getString(R.string.succeed)); } else { Toast.makeText(this, getResources().getString(R.string.failed), Toast.LENGTH_LONG).show(); finish(); } break; default: }}复制代码
当然了, 基础的权限申请别忘了, 在
AndroidManifest.xml
中
复制代码