方法一:申明一个权限
private final int WRITE_COARSE_LOCATION_REQUEST_CODE = 10;
初始化的时候添加进去即可
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
//申请WRITE_EXTERNAL_STORAGE权限
ActivityCompat.requestPermissions(this, new String[]{
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.READ_PHONE_STATE},
WRITE_COARSE_LOCATION_REQUEST_CODE);//自定义的code
}
//权限申请
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
方法二:直接初始化的时候调用requestPermissions()方法即可。
//动态申请权限
private void requestPermissions() {
List<String> permissionList = new ArrayList<>();
// 允许程序打开网络套接字
if (ContextCompat.checkSelfPermission(this, Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED) {
permissionList.add(Manifest.permission.INTERNET);
}
// 允许程序设置内置sd卡的写权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
// 允许程序获取网络状态
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_NETWORK_STATE) != PackageManager.PERMISSION_GRANTED) {
permissionList.add(Manifest.permission.ACCESS_NETWORK_STATE);
}
// 允许程序访问WiFi网络信息
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_WIFI_STATE) != PackageManager.PERMISSION_GRANTED) {
permissionList.add(Manifest.permission.ACCESS_WIFI_STATE);
}
// 允许程序读写手机状态和身份
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
permissionList.add(Manifest.permission.READ_PHONE_STATE);
}
// 允许程序访问CellID或WiFi热点来获取粗略的位置
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
permissionList.add(Manifest.permission.ACCESS_COARSE_LOCATION);
}
//申请打电话权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
permissionList.add(Manifest.permission.CALL_PHONE);
}
if (!permissionList.isEmpty()) { //申请的集合不为空时,表示有需要申请的权限
ActivityCompat.requestPermissions(this, permissionList.toArray(new String[permissionList.size()]), 1);
} else { //所有的权限都已经授权过了
}
}
//动态申请权限部分
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case 1:
if (grantResults.length > 0) { //安全写法,如果小于0,肯定会出错了
for (int i = 0; i < grantResults.length; i++) {
int grantResult = grantResults[i];
if (grantResult == PackageManager.PERMISSION_DENIED) { //这个是权限拒绝
String s = permissions[i];
Toast.makeText(this, s + "权限被拒绝了", Toast.LENGTH_SHORT).show();
} else { //授权成功了
//do Something
}
}
}
break;
default:
break;
}
}
我发了888元10个红包,支付宝扫码即可领取哦!