Android6.0動態許可權最簡單的解決方法

weixin_34413065發表於2018-05-28

前言:動態許可權管理是Android6.0(B>uild.VERSION_CODES.M =Api23)推出的,提醒使用者當前APP所需>要的許可權,防止濫用。這些許可權一般分為三種:

(1)普通許可權:直接manifest清單檔案中寫上註冊就行了
(2)危險許可權:需要動態申請
(3)特殊許可權:一般用不上。

原聲的動態許可權管理很麻煩,程式碼也不夠優雅,因此就有很多的動態許可權管理庫,比較出名一點的有:

  1. EasyPermissions
  2. RuntimePermission
  3. RxPermissions

相較於其他的許可權管理庫,RxPermissions的程式碼最為簡潔,邏輯也更加清晰。


首先引入RxPermissions:

Github地址
我的部落格地址


關鍵程式碼如下:

RxPermissions rxPermissions = new RxPermissions(this);
        rxPermissions
                .requestEach(Manifest.permission.READ_PHONE_STATE,//讀取電話
                        Manifest.permission.ACCESS_COARSE_LOCATION)//獲取位置資訊
                .subscribe(permission -> {
                    if (permission.granted) {
                        Log.d("rxPermissions", permission.name + "同意了");
                        switch (permission.name) {
                            case Manifest.permission.READ_PHONE_STATE:
                                break;
                            case Manifest.permission.ACCESS_COARSE_LOCATION:
                                break;
                        }
                    } else if (permission.shouldShowRequestPermissionRationale) {
                        Log.d("rxPermissions", permission.name + "拒絕了");
                        switch (permission.name) {
                            case Manifest.permission.READ_PHONE_STATE:
                                break;
                            case Manifest.permission.ACCESS_COARSE_LOCATION:
                                break;
                        }
                    } else {
                        switch (permission.name) {
                            case Manifest.permission.READ_PHONE_STATE:
                                break;
                            case Manifest.permission.ACCESS_COARSE_LOCATION:
                                break;
                        }
                        Log.d("rxPermissions", permission.name + "拒絕並不再提示了");
                    }
                });

執行結果:

427576-1aee5d7bae8632b1.jpg
image

427576-5477f240b548e551.jpg
image

相關文章