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