Android權限申請:自帶方法 + 第三方庫實現

Android自帶權限申請方法:

 

1、權限申請:(第二個參數0是requestCode):

String [] permission = {Manifest.permission.ACCESS_FINE_LOCATION};
if(checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION)  != PackageManager.PERMISSION_GRANTED){
    requestPermissions(permission,0);
}

 2、回調(你可以根據requestCode和permissions來做判斷):

    @Override
    public void onRequestPermissionsResult(int requestCode,
         @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if(grantResults[0] == PackageManager.PERMISSION_DENIED){
            finish();
        }
    }

第三方庫1:RxPermissions:

1、依賴:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

dependencies {
    implementation 'com.github.tbruyelle:rxpermissions:0.10.2'
}

2、使用: 

// Must be done during an initialization phase like onCreate
rxPermissions
    .request(Manifest.permission.CAMERA)//可填多個權限,逗號隔開
    .subscribe(granted -> {
        if (granted) { // Always true pre-M
           // I can control the camera now
        } else {
           // Oups permission denied
        }
    });

附上該庫GitHub地址: https://github.com/tbruyelle/RxPermissions


第三方庫2:grantor:

1、依賴:

implementation 'com.github.dfqin:grantor:2.5'

2、使用:

/**
 * 申請錄音權限
 */
private void requestAudioPermission() {
    PermissionsUtil.requestPermission(getApplication(), new PermissionListener() {
        @Override
        public void permissionGranted(@NonNull String[] permissions) {
        }

        @Override
        public void permissionDenied(@NonNull String[] permissions) {
            showTip("請開啓錄音權限");
            XunfeiVoiceActivity.this.finish();
        }
    }, Manifest.permission.RECORD_AUDIO);
}


/**
 * 申請存儲權限
 */
private void requestStoragePermission() {
    PermissionsUtil.requestPermission(getApplication(), new PermissionListener() {
        @Override
        public void permissionGranted(@NonNull String[] permissions) {
        }

        @Override
        public void permissionDenied(@NonNull String[] permissions) {
            Toast.makeText(MainActivity.this, "沒有存儲權限將不能預覽本地視頻", Toast.LENGTH_SHORT).show();
        }
    }, Manifest.permission.WRITE_EXTERNAL_STORAGE);
}

附上該庫GitHub地址:https://github.com/dfqin/PermissionGrantor

 

完。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章