1. 程式人生 > 程式設計 >Android 如何實現動態申請許可權

Android 如何實現動態申請許可權

OverView

今天在複習的時候,突然複習到我們的相機操作,但是對於相機操作,對於我來說比較複雜的是對於許可權的操作。所有我們需要對我們的相機操作進行一些筆記的整理,加深記憶。

開發環境

Android Studio 3.6

Android 11(R)

該筆記使用 java

許可權申請的基礎知識

學習自:GOOGLE ANDROID DEVELOPERS

對於我們所需要申請的許可權我們需要進行如下的操作。

我們需要將所有需要申請的許可權新增到App/src/main/AndroidManifest.xml檔案中。

但是許可權也是分為常規的許可權和危險的許可權的,對於常規的許可權我們的只需要在AndroidManifest.xml檔案中新增就可以使用了,但是對於一些被視為危險許可權的,我們就需要讓使用者來選擇時候同意申請。

接下來我們就看一下如何操作我們的危險許可權吧。

如何判斷是否申請了許可權

按照國際慣例我們先看一下原始碼:

private boolean checkPermission() {
  //first we need check this Drive has? CAMERA Permission
  if (ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.CAMERA},CHECK_PERMISSION_CAMERA);
    return false;
  } else
    return true;
}

這裡我們使用我們的相機許可權作為例項。

首先我們需要判斷我們的使用有相機許可權,可以使用,申請完成後我們需要進行許可權申請。我們將我們所需要的許可權申請,並且傳入我們的指定程式碼。這裡我的CHECK_PERMISSION_CAMERA的值為1。

然後就是我們需要重寫我們的系統方法onRequestPermissionsResult

這個方法可以很好的來判斷使用者時候同意了我們的許可權申請。

首先來看看我們的原始碼:

@Override
public void onRequestPermissionsResult(int requestCode,@NonNull String[] permissions,@NonNull int[] grantResults) {
  super.onRequestPermissionsResult(requestCode,permissions,grantResults);
  switch (requestCode) {
    case CHECK_PERMISSION_CAMERA: {
      if (grantResults.length > 0 && permissions[0].equals(PackageManager.PERMISSION_GRANTED)) {
        Toast.makeText(this,"The camera permission application wes successful!",Toast.LENGTH_SHORT).show();
        dispatchTakePictureIntent();
      } else {
        Toast.makeText(this,"The camera permission application wes failed!",Toast.LENGTH_SHORT).show();
      }
    }
    break;
  }
}

這個就是我判斷使用者時候同意我們申請相機許可權的全部程式碼了。

這個也是非常的簡單,我們通過在申請的時候傳入的識別程式碼來判斷,如果程式碼通過後我們需要通過驗證grantResults的長度和許可權陣列中的索引位置來判斷使用者有沒有同意我們的許可權申請。如果同意了我們就可以進行下一步操作。

這部分程式碼還是非常的簡單的。關於動態許可權的申請還是非常的簡單的。

以上這篇Android 如何實現動態申請許可權就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。