動態獲取許可權
阿新 • • 發佈:2018-11-19
首先申請許可權:
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; } }