1. 程式人生 > 其它 >Android 許可權申請java/kotlin

Android 許可權申請java/kotlin

java

  private static List<String> sPermissions = new ArrayList<String>(){};
  private static int MAX_NUMBER_REQUEST_PERMISSIONS = 2;
  private static int REQUEST_CODE_PERMISSIONS = 101;
  private int permissionRequestCount = 0;
  private boolean hasPermissions = false;

  /**
     * 許可權申請
     
*/ private void requestPermissionsIfNecessary() { hasPermissions = checkAllPermissions(); if (!hasPermissions) { if (permissionRequestCount < MAX_NUMBER_REQUEST_PERMISSIONS) { permissionRequestCount += 1; ActivityCompat.requestPermissions(
this, sPermissions.toArray(new String[0]), REQUEST_CODE_PERMISSIONS); } else { } } } /** * 許可權回撥 onActivityResult已經廢棄 */ @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == REQUEST_CODE_PERMISSIONS) { requestPermissionsIfNecessary(); } } /** * 許可權檢查 * @return 許可權是否申請 */ private Boolean checkAllPermissions() { boolean hasPermissions = true; for (String permission : sPermissions) { hasPermissions = hasPermissions & (ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED); } return hasPermissions; }

kotlin

第一種參考上面Java程式碼

第二種適合單一許可權申請

//註冊許可權回撥,它處理使用者對系統許可權對話方塊的響應。 儲存返回值,ActivityResultLauncher 的一個例項。
    // 您可以使用此程式碼段中所示的 val,也可以在 onAttach() 或 onCreate() 方法中使用 lateinit var。
    private val requestPermissionLauncher =
        registerForActivityResult(
            ActivityResultContracts.RequestPermission()
        ) { isGranted: Boolean ->
            if (isGranted) {
                // 已授予許可權
            } else {
                // 許可權請求被拒絕。
            }
        }

requestPermissionLauncher.launch(Manifest.permission.RECORD_AUDIO)