在Android中,权限请求通常通过运行时权限请求。BaseActivity可以处理权限请求的逻辑如下:
- 在BaseActivity中创建一个方法用于检查权限是否已经被授予:
public boolean checkPermission(String permission) { return ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED; }
- 在BaseActivity中创建一个方法用于请求权限:
public void requestPermission(String permission, int requestCode) { ActivityCompat.requestPermissions(this, new String[]{permission}, requestCode); }
- 在BaseActivity中重写onRequestPermissionsResult方法,用于处理权限请求结果:
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // 权限被授予 onPermissionGranted(requestCode); } else { // 权限被拒绝 onPermissionDenied(requestCode); } } public void onPermissionGranted(int requestCode) { // 处理权限被授予的逻辑 } public void onPermissionDenied(int requestCode) { // 处理权限被拒绝的逻辑 }
- 在具体的Activity中继承BaseActivity,并在需要请求权限的地方调用上述方法:
if (!checkPermission(Manifest.permission.CAMERA)) { requestPermission(Manifest.permission.CAMERA, REQUEST_CAMERA_PERMISSION); }
这样,BaseActivity可以处理权限请求的逻辑,并且具体的Activity只需要调用相应的方法即可。