1)关键api
1.请求权限
public final void requestPermissions(@NonNull String[] permissions, int requestCode);
2.权限请求召回
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,@NonNull int[] grantResults);
2)例子
1.在模块buid.gradle加入依赖
compile ‘com.lovedise:permissiongen:0.0.6’
2.权限请求
PermissionGen.with(this).addRequestCode(AppConstants.PERMISSION_REQUEST_CODE)
.permissions(Manifest.permission.READ_PHONE_STATE,permission.WRITE_EXTERNAL_STORAGE)
.request();
- 权限请求召回
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
for (int i = 0; i < grantResults.length; i++) {
if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivityForResult(intent, AppConstants.PERMISSION_APP_SETTING_REQUEST);
return;
}
}
PermissionGen.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
}
4.请求成功跳转主页,请求失败退出应用
应用信息页面退出的召回:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == AppConstants.PERMISSION_APP_SETTING_REQUEST) {
for (String PERMISSION : PERMISSIONS) {
if (PackageManager.PERMISSION_GRANTED != ActivityCompat.checkSelfPermission(this, PERMISSION)) {
Runtime.getRuntime().exit(0);
return;
}
}
successRequestPermission();//授权后的处理
}
}
@PermissionSuccess(requestCode = AppConstants.PERMISSION_REQUEST_CODE)
public void successRequestPermission() {
//do otherthing
}