普通权限:
直接在Manifest文件中申明,例如网路权限 ——>
uses-permission android:name=”android.permission.INTERNET”
危险权限:
使用时询问用户,由用户选择;例如读取文件的权限——>
Manifest.permission.WRITE_EXTERNAL_STORAGE(Manifest中同样需要申请)
1首先检查是否配置了权限:
ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_DENIED
PERMISSION_DENIED 表示未赋权限
2申请权限
**2.1**Activity中使用:
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}
,1);
**2.2**Fragment中使用:
this.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}
,1);
3 处理选择结果
重写回调函数
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == 1){
if (Manifest.permission.WRITE_EXTERNAL_STORAGE.equals(permissions[0])
&& grantResults[0] == PackageManager.PERMISSION_GRANTED){
actionOk();//同意赋权后操作
}
}
}