安卓简易权限调用

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();
内容概要:该论文针对无人机遥感影像中城市地表水提取精度不高的问题,提出了一种改进的 UE-Net6 方法。通过构建不同深度的 U-Net 模型(5/6/7 层)对比,发现 U-Net6 效果最优。该模型采用了 ELU 激活函数替代 ReLU,引入 Dropout 正则化防止过拟合。实验表明,UE-Net6 在水体提取精度上显著优于 U-Net、SegNet 和 FCN 等传统模型,能有效实现复杂背景下小区域水体的精确提取。此外,论文详细介绍了 UE-Net6 的网络结构、改进点、数据预处理、损失函数设计、精度评价指标以及训练建议等内容。; 适合人群:具备一定深度学习和遥感影像处理基础的研究人员和工程师。; 使用场景及目标:①用于城市地表水的高精度提取,特别是在复杂背景下小区域水体的识别;②研究 U-Net 网络结构的改进方法,如激活函数的选择和正则化策略;③探索无人机遥感影像在环境监测、水资源管理等领域的应用。; 其他说明:该论文不仅提供了完整的 UE-Net6 模型代码实现,还通过详细的实验结果和可视化分析展示了模型的优势和局限性。建议读者在实践中结合实际数据集进行训练和优化,并关注模型在不同环境条件下的表现,特别是针对阴影反射率较高的水体和浑浊水体的识别问题。同时,论文提出了未来的研究方向,如多光谱融合和计算效率优化等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值