动态权限申请步骤
- 检查应用是否拥有 该权限
int resultCode = ContextCompat.checkSelfPermission(this, permissions[i]);
- 有权限的话直接执行需要做的逻辑即可。 没有权限 执行 步骤 3
- 动态的申请权限。
requestPermissions(permissions, 200);
第二个参数是 请求码(requestCode),在回调 的 函数中能用到。 - 如果用户 操作后,同意或者不同意 该授权,会有个 回调。
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
示例代码
// 动态获取所有权限 (写入权限 和读取权限)
public void getPermissions(View v) {
String[] permissions = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE};
requestPermissions(permissions, 200);
}
// 具体的逻辑 做了一大堆事情
public void click(View v) {
try {
// 具体的逻辑,做了一大堆 事情
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 200) {
Toast.makeText(this, requestCode + "", Toast.LENGTH_LONG).show();
}
}