安卓简易权限调用

发布于:2024-10-11 ⋅ 阅读:(11) ⋅ 点赞:(0)

EasyPermission

简易权限调用

功能&特性

  • 1、自动判断权限所在的请求周期,自动回调
    • 从未请求,调用ActivityCompat.requestPermissions。
    • 仅被拒绝,请求权限任意次,但每次都拒绝,调用ActivityCompat.requestPermissions。
    • 已授权,无操作。
    • 永久拒绝,调用相关厂商的接口去该应用的权限配置页。
  • 2、根据所处周期自动弹出提示窗口,自动回调
    • 在用户首次请求时,不弹窗
    • 用户首次请求后拒绝又请求,弹窗
    • 永久拒绝后又请求,弹窗
  • 3、支持自定义权限请求周期,自动回调
  • 4、支持强制请求权限,直到用户点击弹窗上的退出按钮,自动回调
  • 5、支持请求一些特性,自动回调
    • 后台运行
    • 电池优化
  • 6、不需要在Activity里配置回调方法
  • 7、原理是动态注册和监听Activity生命周期

导入依赖

	//https://github.com/isong0623/EasyPermission
    implementation 'com.github.isong0623:EasyPermission:1.0'

初始化

在Application的onCreate方法中调用如下函数

import android.Manifest;

private void initEasyPermission(){
      PermissionContext.set(this);
      
      //以下内容用于 展示当用户拒绝而又请求时 或 用户永久拒绝时
      //弹出的提示元信息

      //配置权限名称
      PermissionConfigure.setPermissionName(Manifest.permission.CAMERA,"相机");
      PermissionConfigure.setPermissionMessage(Manifest.permission.CAMERA, "为了拍照");
//配置权限提示信息
      PermissionConfigure.setPermissionName(Manifest.permission.WRITE_EXTERNAL_STORAGE,"读取文件");
      PermissionConfigure.setPermissionMessage(Manifest.permission.WRITE_EXTERNAL_STORAGE, "为了好玩");
  }

请求各种权限

普通执行一次

EasyPermission.permissions(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE)
			  .setAccuratelyCallbackEnable(true)
              .onGranted(new PermissionAction<List<String>>() {
                     @Override
                     public void onAction(List<String> data) {
                         Toast.makeText(MainActivity.this, "请求成功!", Toast.LENGTH_SHORT).show();
                     }
                 })
                 .onDenied(new PermissionAction<List<String>>() {
                     @Override
                     public void onAction(List<String> data) {
                         Toast.makeText(MainActivity.this, "请求失败!", Toast.LENGTH_SHORT).show();
                     }
                 })
                 .onDeniedOnce(new PermissionAction<List<String>>() {
                     @Override
                     public void onAction(List<String> data) {
                         Toast.makeText(MainActivity.this, "请求失败,一次!", Toast.LENGTH_SHORT).show();
                     }
                 })
                 .onDeniedAlways(new PermissionAction<List<String>>() {
                     @Override
                     public void onAction(List<String> data) {
                         Toast.makeText(MainActivity.this, "请求失败,总是!", Toast.LENGTH_SHORT).show();
                     }
                 })
                 .requestOnce();

执行到某个周期

以下代码将会从[任意状态]开始到用户永久拒绝将会执行到跳转[设置页返回]结束

EasyPermission.permissions(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE)
                        .onGranted(new PermissionAction<List<String>>() {
                            @Override
                            public void onAction(List<String> data) {
                                Toast.makeText(MainActivity.this, "请求成功!", Toast.LENGTH_SHORT).show();
                            }
                        })
                        .onDenied(new PermissionAction<List<String>>() {
                            @Override
                            public void onAction(List<String> data) {
                                Toast.makeText(MainActivity.this, "请求失败!", Toast.LENGTH_SHORT).show();
                            }
                        })
                        .requestFully();

强制执行,直到用户退出程序

  EasyPermission.permissions(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE)
                .onGranted(new PermissionAction<List<String>>() {
                    @Override
                    public void onAction(List<String> data) {
                        Toast.makeText(MainActivity.this, "请求成功!", Toast.LENGTH_SHORT).show();
                    }
                })
                .requestForce();

请求某些特性

注意:暂不支持自启动,因为没有办法判断程序是否能够自启动

请求某些特性一次

EasyFeature.features(Feature.Background, Feature.Battery)
           .onDenied(new PermissionAction<List<Feature>>() {
                  @Override
                  public void onAction(List<Feature> data) {
                      Toast.makeText(MainActivity.this, "请求失败!", Toast.LENGTH_SHORT).show();
                  }
              })
              .onGranted(new PermissionAction<List<Feature>>() {
                  @Override
                  public void onAction(List<Feature> data) {
                      Toast.makeText(MainActivity.this, "请求成功!", Toast.LENGTH_SHORT).show();
                  }
              })
              .request();

强制请求某些特性,直到用户退出程序

     EasyFeature.features(Feature.Background, Feature.Battery)
                .onGranted(new PermissionAction<List<Feature>>() {
                     @Override
                     public void onAction(List<Feature> data) {
                         Toast.makeText(MainActivity.this, "请求成功!", Toast.LENGTH_SHORT).show();
                     }
                 })
                 .requestForce();