首先申请权限:
List<String> permissionList = new ArrayList<>();
/**
* 允许程序获取网络信息状态,如当前的网络连接是否有效
* */
if (ContextCompat.checkSelfPermission(this, Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED) {
permissionList.add(Manifest.permission.INTERNET);
}
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.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);
}
if (permissionList.size() != 0) { //申请的集合不为空时,表示有需要申请的权限
ActivityCompat.requestPermissions(this, permissionList.toArray(new String[permissionList.size()]), 1);
} else { //所有的权限都已经授权过了
findview();
}
申请权限的回调
@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();
initJurisdiction();
} else { //授权成功了
findview();
}
}
}
break;
default:
break;
}
}