【Android】動態申請多個權限

下面這個方法根據自己需要申請的權限修改內容,之后呼叫getPermission()就行,
private static final String TAG = "MainActivity"; private final int ACCESS_LOCATION=1; /** * 獲取權限,可以與其他專案的權限進行統一處理 */ private void getPermission() { if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) { int permissionCheck = 0; permissionCheck = this.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION); //允許一個程式訪問精良位置(如GPS) permissionCheck += this.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION); //允許一個程式訪問CellID或WiFi熱點來獲取粗略的位置 permissionCheck += this.checkSelfPermission(Manifest.permission.CAMERA); //請求訪問使用照相設備 if (permissionCheck != PackageManager.PERMISSION_GRANTED) { //未獲得權限 this.requestPermissions( // 請求授權 new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.CAMERA},ACCESS_LOCATION);// 自定義常量,任意整型 } } } /** * 請求權限的結果回呼,每次呼叫 requestpermissions(string[],int)時都會呼叫此方法, * @param requestCode 傳入的請求代碼 * @param permissions 傳入permissions的要求 * @param grantResults 相應權限的授予結果:PERMISSION_GRANTED 或 PERMISSION_DENIED */ @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case ACCESS_LOCATION: if (hasAllPermissionGranted(grantResults)) { Log.i(TAG, "onRequestPermissionsResult: 用戶允許權限"); } else { Log.i(TAG, "onRequestPermissionsResult: 拒絕搜索設備權限"); } break; } } private boolean hasAllPermissionGranted(int[] grantResults) { for (int grantResult : grantResults) { if (grantResult == PackageManager.PERMISSION_DENIED) { return false; } } return true; }
即使動態申請的權限也要在AndroidManifest.xml檔案里配置
<!-- 請求訪問使用照相設備-->
<uses-permission android:name="android.permission.CAMERA" />
<!-- 允許一個程式訪問精良位置(如GPS)-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 允許一個程式訪問CellID或WiFi熱點來獲取粗略的位置-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/324148.html
標籤:其他
