android 6.0之后申请还有点麻烦的,所以我们介绍PermissionsDispatcher
https://github.com/permissions-dispatcher/PermissionsDispatcher
android studio 安装插件 image.png
@RuntimePermissions
public class AccusedActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_accused);
//APT生成需要编译一下
AccusedActivityPermissionsDispatcher.showCameraWithPermissionCheck(this);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
AccusedActivityPermissionsDispatcher.onRequestPermissionsResult(this, requestCode, grantResults);
}
//同意请求之后触发
@NeedsPermission(Manifest.permission.CAMERA)
void showCamera() {
Toast.makeText(this, "showCamera", Toast.LENGTH_SHORT).show();
}
// 申请权限弹窗 选择禁止 但是并未勾选以后再不提醒 , 第二次进来显示自定义弹窗
@OnShowRationale(Manifest.permission.CAMERA)
void showRationaleForCamera(final PermissionRequest request) {
new AlertDialog.Builder(this)
.setMessage("showRationaleForCamera")
//显示同意 再调出权限弹窗询问
.setPositiveButton("同意", (dialog, button) -> request.proceed())
.setNegativeButton("拒绝", (dialog, button) -> request.cancel())
.show();
}
//选择权限禁止按钮
@OnPermissionDenied(Manifest.permission.CAMERA)
void showDeniedForCamera() {
Toast.makeText(this, "拒绝", Toast.LENGTH_SHORT).show();
}
//选中了 不再询问并且禁止了 再次进来时提醒
@OnNeverAskAgain(Manifest.permission.CAMERA)
void showNeverAskForCamera() {
Toast.makeText(this, "从来不问", Toast.LENGTH_SHORT).show();
}
}
网友评论