1. 程式人生 > >Android6.0執行時許可權處理(專案中使用到的一種形式,沒有使用第三方庫)

Android6.0執行時許可權處理(專案中使用到的一種形式,沒有使用第三方庫)

相信大家都知道Android6.0之後的許可權申請跟之前的版本有一個很大的差別,那就是任何危險許可權都必須經過使用者的手動選擇是否接受來做相應的操作,而Android6.0之前安裝應用的過程中是預設選中的。也就是說你要安裝這個應用那就必須預設許可這些許可權。所以在專案中遇到使用許可權的時候要注意一下區分版本。6.0以下可以直接使用,6.0以上需要程式碼來實現許可權申請Dailog的彈出。

下面以訪問Storage許可權為例來詳細解釋一下Android6.0的執行時許可權:

需求:點選一個按鈕實現在sd卡建立一個檔案的功能

首先AndroidManifest中必須要已經寫入了許可權這個是必須的

然後我們進行Android系統版本的檢查,如果大於Android6.0則執行申請許可權操作,否則直接建立檔案程式碼如下


當滿足 去申請許可權的條件時系統會彈出請求許可權的Dialog提示,然後使用者可以選擇是否接受許可權請求,當用戶點選接受或者不接受都會產生一個回撥

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
doNext(requestCode,grantResults);
}

然後我們重寫此方法,通過requestCode來判斷是哪一個許可權申請的回撥,然後我們執行了doNext方法(doNext只是我們自己寫的一個方法名字而已)然後doNext程式碼如下


通過以上程式碼可以看出,if條件中也就是說使用者選擇了接受許可權,然後我們執行了建立檔案的方法。else也就是使用者拒絕了不用做任何操作,如果使用者要使用這個功能就必須接受這個許可權所以下次點選會繼續彈出許可權選擇框