Android權(quán)限動(dòng)態(tài)檢查開源庫(kù) -- Dexter

先貼上這個(gè)開源庫(kù)的主頁(yè)地址:

GitHub - Karumi/Dexter: Android library that simplifies the process of requesting permissions at runtime.

這是一個(gè)不錯(cuò)的老外寫的開源庫(kù),用來(lái)簡(jiǎn)化Android動(dòng)態(tài)權(quán)限檢測(cè),因?yàn)锳ndroid 6.0以及以后的版本加入了動(dòng)態(tài)權(quán)限的檢測(cè),來(lái)優(yōu)化系統(tǒng)的安全性。但是當(dāng)我們自己去寫代碼的時(shí)候就會(huì)遇到去動(dòng)態(tài)申請(qǐng)權(quán)限的問(wèn)題,Android明確規(guī)定了一些權(quán)限一定要?jiǎng)討B(tài)申請(qǐng)才能使用,不然會(huì)報(bào)SecurityException。

當(dāng)然了,Android原生肯定是提供了申請(qǐng)這些權(quán)限的接口,以及獲取當(dāng)前權(quán)限是否被用戶確認(rèn)申請(qǐng)等,但是在使用過(guò)程中比較復(fù)雜,所以下面介紹這個(gè)開源庫(kù)的使用,非常簡(jiǎn)單。

首先新建Android工程項(xiàng)目,并且在build.gradle中添加依賴:

dependencies {
    //...
    implementation 'com.karumi:dexter:5.0.0'
}

使用起來(lái)也是非常方便,

public MyActivity extends Activity {
    @Override public void onCreate() {
        super.onCreate();
        Dexter.withActivity(activity)
            .withPermission(permission)
            .withListener(listener)
            .check();
    }
}
單個(gè)權(quán)限,
Dexter.withActivity(this)
    .withPermission(Manifest.permission.CAMERA)
    .withListener(new PermissionListener() {
        @Override public void onPermissionGranted(PermissionGrantedResponse response) {/* ... */}
        @Override public void onPermissionDenied(PermissionDeniedResponse response) {/* ... */}
        @Override public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) {/* ... */}
    }).check();
多個(gè)權(quán)限,
Dexter.withActivity(this)
    .withPermissions(
        Manifest.permission.CAMERA,
        Manifest.permission.READ_CONTACTS,
        Manifest.permission.RECORD_AUDIO
    ).withListener(new MultiplePermissionsListener() {
        @Override public void onPermissionsChecked(MultiplePermissionsReport report) {/* ... */}
        @Override public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissions, PermissionToken token) {/* ... */}
    }).check();

是不是很簡(jiǎn)單,最后給出一個(gè)示例,申請(qǐng)三個(gè)權(quán)限,當(dāng)某個(gè)全選被拒絕時(shí),提示跳轉(zhuǎn)設(shè)置,

        MultiplePermissionsListener mMultiplePermissionListener =
                SnackbarOnAnyDeniedMultiplePermissionsListener.Builder
                        .with(findViewById(android.R.id.content), "Some permissions need to access!")
                        .withOpenSettingsButton("Settings")
                        .withCallback(new Snackbar.Callback() {
                            @Override
                            public void onShown(Snackbar sb) {
                                super.onShown(sb);
                            }

                            @Override
                            public void onDismissed(Snackbar transientBottomBar, int event) {
                                super.onDismissed(transientBottomBar, event);
                            }
                        }).build();
        Dexter.withActivity(this)
                .withPermissions(Manifest.permission.CAMERA,
                        Manifest.permission.READ_CONTACTS,
                        Manifest.permission.RECORD_AUDIO)
                .withListener(mMultiplePermissionListener).check();

Very Easy, Right?
最后附上demo視頻:


permission.gif
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,324評(píng)論 25 708
  • UI Awesome-MaterialDesign – MaterialDesignCenter改名為Awesom...
    程序亦非猿580230閱讀 5,989評(píng)論 2 88
  • 很久以前看到一個(gè)詞“前攝行為” 其實(shí)就是當(dāng)自己遇到要發(fā)火的事情,自己該如何的管理好情緒,理性的處理問(wèn)題!叫成熟! ...
    悅洋行者閱讀 549評(píng)論 0 0
  • 大墩峽海拔在1800至3300米之間,常年氣候濕潤(rùn),陽(yáng)光充足。 大墩峽距離省會(huì)城市蘭州200公里左右...
    宗林的李閱讀 3,389評(píng)論 6 5
  • 風(fēng)是涼的, 光是暖的; 風(fēng)——吹拂了世界, 光——照耀了世界。
    0333嬌閱讀 234評(píng)論 0 0

友情鏈接更多精彩內(nèi)容