一、申请
//申请动态权限 private void getPermission(){ //申请运行时权限 List<String> permissionList = new ArrayList<>(); if (ContextCompat.checkSelfPermission(MyBaiduMap.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){ //GPS定位 permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION); } if (ContextCompat.checkSelfPermission(MyBaiduMap.this,Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED){ //读取设备信息 permissionList.add(Manifest.permission.READ_PHONE_STATE); } if (ContextCompat.checkSelfPermission(MyBaiduMap.this,Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ //sd卡权限 permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); }if (ContextCompat.checkSelfPermission(MyBaiduMap.this,Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED){ //网络定位 permissionList.add(Manifest.permission.ACCESS_COARSE_LOCATION); }if (ContextCompat.checkSelfPermission(MyBaiduMap.this,Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED){ //使用步行AR导航,配置Camera权限 permissionList.add(Manifest.permission.CAMERA); } if (!permissionList.isEmpty()){ String[] permission = permissionList.toArray(new String[permissionList.size()]); ActivityCompat.requestPermissions(this,permission,1);//申请 } }
二、反馈
@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){ for (int result:grantResults){ if (result != PackageManager.PERMISSION_GRANTED){ Toast.makeText(this,"必须同意所有权限才可使用本程序",Toast.LENGTH_SHORT).show(); finish(); return; } } }else { Toast.makeText(this,"发生未知错误",Toast.LENGTH_SHORT).show(); } break; default: } }