android 手机权限管理——PermissionsDispatcher

时间:2023-03-09 21:55:26
android 手机权限管理——PermissionsDispatcher

Android6.0 之后某些权限需要动态申请,相比于之前版本复杂了许多。不过已经有大神给我们写好了框架(PermissionsDispatcher),我们用起来还是很方便。

1、添加引用

  根据 gradle 版本进行如下配置:

  如果 Android Gradle Plugin >=2.2

  在 app 模块下的 build.gradle 添加下面的配置:

compile 'com.github.hotchemi:permissionsdispatcher:2.3.2'
  annotationProcessor 'com.github.hotchemi:permissionsdispatcher-processor:2.3.2'

    Android Gradle Plugin <2.2

  需要额外在项目层级下的 build.gradle 添加下面配置:

buildscript {
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}

 

2、使用 五种注解(注解的方法不能是private)

注解 是否必须 描述
@RuntimePermissions 注册一个 Activity 或 Fragment 用于处理权限
@NeedsPermission 注解一个方法,说明需要什么权限(一个或多个)
@OnShowRationale   注解一个方法,解释为什么需要这些权限
@OnPermissionDenied   注解一个方法,当用户拒绝授权时将调用该方法
@OnNeverAskAgain   注解一个方法,当用户选择了 "不再提醒" 将调用该方法

  示例代码

@RuntimePermissions
public class MainActivity extends AppCompatActivity { // 单个权限
// @NeedsPermission(Manifest.permission.CAMERA)
// 多个权限
@NeedsPermission({ Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO })
void showCamera() {
getSupportFragmentManager().beginTransaction()
.replace(R.id.sample_content_fragment, CameraPreviewFragment.newInstance())
.addToBackStack("camera")
.commitAllowingStateLoss();
} // 向用户说明为什么需要这些权限(可选)
@OnShowRationale(Manifest.permission.CAMERA)
void showRationaleForCamera(final PermissionRequest request) {
new AlertDialog.Builder(this)
.setMessage(R.string.permission_camera_rationale)
.setPositiveButton(R.string.button_allow, (dialog, button) -> request.proceed())
.setNegativeButton(R.string.button_deny, (dialog, button) -> request.cancel())
.show();
} // 用户拒绝授权回调(可选)
@OnPermissionDenied(Manifest.permission.CAMERA)
void showDeniedForCamera() {
Toast.makeText(this, R.string.permission_camera_denied, Toast.LENGTH_SHORT).show();
} // 用户勾选了“不再提醒”时调用(可选)
@OnNeverAskAgain(Manifest.permission.CAMERA)
void showNeverAskForCamera() {
Toast.makeText(this, R.string.permission_camera_neverask, Toast.LENGTH_SHORT).show();
}
} 作者:linchaolong
链接:http://www.jianshu.com/p/64e7334cde11
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。