首先第一步

在【AndroidManifest.xml】文件中添加你要申请的权限

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

然后在application标签下加上这条代码:

android:requestLegacyExternalStorage="true"

【如图所示】
最简洁的 Android10 动态申请权限获取方法,代码简单,操作简单,亲测有效。-LMLPHP

第二步

在工具类中封装一个方法,代码以及注释如下:

/**
     * 动态申请权限
     * @param context    上下文
     * @param permission 要申请的一个权限,列如写的权限:Manifest.permission.WRITE_EXTERNAL_STORAGE
     * @return  是否有当前权限
     */

    private boolean RequestPermissions(@NonNull Context context, @NonNull String permission) {
        if (ContextCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
            Log.i("requestMyPermissions",": 【 " + permission + " 】没有授权,申请权限");
            ActivityCompat.requestPermissions((Activity) context, new String[]{permission}, 100);
            return false;
        } else {
            Log.i("requestMyPermissions",": 【 " + permission + " 】有权限");
            return true;
        }
    }

用法很简单

直接调用,填写上下文和对应权限即可【AppTool是我的方法所属的类名】

AppTool.RequestPermissions(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE);

如果你想知道权限的请求状态,也很简单,if…else…判断一下返回值即可

boolean Permissions = AppTool.RequestPermissions(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE);

        if(Permissions){
            Toast.makeText(MainActivity.this,"有这个权限",Toast.LENGTH_LONG).show();
        }else{
            Toast.makeText(MainActivity.this,"无这个权限,发起弹窗请求",Toast.LENGTH_LONG).show();
        }
08-30 13:04