关于Android兼容7.0系统版本的问题

            最近搞NDK开发,费了不少功夫封装好的arr包,在多个机型上都有测试,突然在华为P10上出现crash,经过查看日志及结合该机型Android系统版本,觉得很可能是系统兼容性的问题,因为到读写文件操作权限问题。

            关于Android7.0 系统新特性:https://developer.android.google.cn/about/versions/nougat/android-7.0.html  不了解的可以查看Google官方文档介绍。

  之所以会在7.0系统上会出现crash的情况,主要是Android7.0更改了权限管理,加入了动态权限,让用户授权危险权限管理。

          以下是两种兼容Android7.0系统权限管理的两种方法:

          1.最直接也最简单的方法:修改Module的build.gradle中的targetSDKVersion = 22;

          2.使用谷歌提供的EasyPermissions:

              ①.build,gradle中添加依赖:

                   dependencies {
  compile 'pub.devrel:easypermissions:0.1.9'
   }

             ②.检查权限

String[] perms = {Manifest.permission.CAMERA, Manifest.permission.CHANGE_WIFI_STATE};
if (EasyPermissions.hasPermissions(this, perms)) {
   //...     
} else {
    //...
  }

      ③.申请权限

EasyPermissions.requestPermissions(this, "拍照需要摄像头权限", RC_CAMERA_AND_WIFI, perms);     

         ④.实现EasyPermissions.PermissionCallbacks接口,直接处理权限是否成功申请

         @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        // Forward results to EasyPermissions
        EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
    }


    @Override
    public void onPermissionsGranted(int requestCode, List<String> list) {
        // Some permissions have been granted
        // ...
    }


    @Override
         public void onPermissionsDenied(int requestCode, List<String> list) {
        // Some permissions have been denied
         // ...
    }

Easypermissions主要简化了对权限申请结果的处理和判断,直接以接口的方式回调处理结果。

以上两种是针对兼容Android7.0做出的权限管理,在项目中有用到,做一个小结,由于本人水平有限,欢迎大家批评指正,谢谢!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值