一行程式碼搞定安卓6.0動態許可權獲取(請求許可權庫)
阿新 • • 發佈:2019-01-01
安卓6.0的動態許可權申請困擾了很多開發者,谷歌提供的官方申請方式過於繁複,程式碼量很大,也不夠優雅。於是,我寫了一個動態請求許可權庫,用來方便的獲取許可權以及進行一些處理。
依賴庫
使用這個庫需要minSdkVersion>11,build.gradle為3.0以上
allprojects {
repositories {
google()
jcenter()
}
}
implementation 'com.example.weeboos:permissionLib:1.1.4'
如何使用該庫
首先建立一個PermissionRequest物件
PermissionRequest request = new PermissionRequest(this); // 這個this需要一個activity物件或者fragment物件
舉例請求CAMERA許可權
request.requestPermission(new PermissionRequest.PermissionListener() {
@Override
public void permissionGranted() {
//do Something when permission granted
Toast.makeText(MainActivity.this,"獲取成功",Toast.LENGTH_SHORT).show();
}
@Override
public void permissionDenied(ArrayList<String> permissions) {
//do Something when permission denied
Toast.makeText(MainActivity.this ,"獲取拒絕",Toast.LENGTH_SHORT).show();
}
@Override
public void permissionNeverAsk(ArrayList<String> permissions) {
//do Something when permission never ask
Toast.makeText(MainActivity.this,"不再詢問",Toast.LENGTH_SHORT).show();
PermissionUtils.showAlertDialog(MainActivity.this,PermissionUtils.translateArrayString(permissions));
}
},Manifest.permission.CAMERA);
如果需要請求多個許可權的話
request.requestPermission(new PermissionRequest.PermissionListener() {
@Override
public void permissionGranted() {
//do Something when permission granted
Toast.makeText(MainActivity.this,"獲取成功",Toast.LENGTH_SHORT).show();
}
@Override
public void permissionDenied(ArrayList<String> permissions) {
//do Something when permission denied
Toast.makeText(MainActivity.this,"獲取拒絕",Toast.LENGTH_SHORT).show();
}
@Override
public void permissionNeverAsk(ArrayList<String> permissions) {
//do Something when permission never ask
Toast.makeText(MainActivity.this,"不再詢問",Toast.LENGTH_SHORT).show();
PermissionUtils.showAlertDialog(MainActivity.this,PermissionUtils.translateArrayString(permissions));
}
},new String[]{Manifest.permission.CAMERA,Manifest.permission.WRITE_EXTERNAL_STORAGE});