首先第一步
在【AndroidManifest.xml】文件中添加你要申请的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
然后在application标签下加上这条代码:
android:requestLegacyExternalStorage="true"
【如图所示】
第二步
在工具类中封装一个方法,代码以及注释如下:
/**
* 动态申请权限
* @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();
}