操作步骤
android6.0以上版本需要动态获取权限
1. AndroidManifest.xml文件添加权限
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
2.Activity类OnCreate下添加代码
以读取手机状态信息的权限为例子
if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions((Activity)context, new String[]{Manifest.permission.READ_PHONE_STATE}, 1);
}
ContextCompat.checkSelfPermission
- 第一个参数是Context
- 第二个参数是具体的权限名
返回值跟PackageManager.PERMISSION_GRANTED比较想等则说明已经授权
requestPermissions
- 第一个参数是Activity实例
- 第二参数是一个String数组,具体的权限名
- 第三个参数是请求码只要是唯一值就可以,该值可以用到后面的onRequestPermissionsResult回调中
3.重载onRequestPermissionsResult,无论用户是同意还是拒绝权限申请的请求,最终都会回调该函数
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode){
case 1:
if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
} else {
}
}
}
可根据用户是否同意分别操作