zoukankan      html  css  js  c++  java
  • Android开源项目-Easypermissions

    Easypermissions简化了Android M的运行时权限的申请、结果处理、判断等步骤。

    1 相关文档

    官方文档:

    https://github.com/googlesamples/easypermissions

    运行时权限官方文档解释:

    https://developer.android.com/training/permissions/requesting.html

    2 为什么使用Easypermissions

    Android M对权限系统进行了改变。Android M之前所需权限只需要在AndroidManifest中申请即可。但更新Android M系统后,部分“Dangerous Permission”需要在运行时询问申请。

    Normal and Dangerous Permissions解释:
    https://developer.android.com/guide/topics/security/permissions.html#normal-dangerous

    如下图所示:

    运行时权限申请

    代码中如果需要申请运行时权限步骤:

    1 检查运行时权限

    ContextCompat.checkSelfPermission(thisActivity,
                    Manifest.permission.READ_CONTACTS)
            != PackageManager.PERMISSION_GRANTED
    

    2 申请权限

    ActivityCompat.requestPermissions(thisActivity,
                    new String[]{Manifest.permission.READ_CONTACTS},
                    MY_PERMISSIONS_REQUEST_READ_CONTACTS);
    

    3 接收权限处理结果

    @Override
    public void onRequestPermissionsResult(int requestCode,
            String permissions[], int[] grantResults) {
        switch (requestCode) {
            case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
                // If request is cancelled, the result arrays are empty.
                if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
    
                    // permission was granted, yay! Do the
                    // contacts-related task you need to do.
    
                } else {
    
                    // permission denied, boo! Disable the
                    // functionality that depends on this permission.
                }
                return;
            }
    
            // other 'case' lines to check for other
            // permissions this app might request
        }
    }
    
    

    以上即是google建议的运行时权限处理过程。代码量和处理地方还是比较繁琐的。so,Easypermissions应运而生。

    3 如何使用

    首先,引用库

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

    同样,easypermissions处理权限分为3步。

    1 检查权限

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

    2 申请权限

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

    3 实现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
            // ...
        }
    

    4 总结

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



    作者:Tsy远
    链接:https://www.jianshu.com/p/2b3661928e66
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    AptitudeSystem 2.0
    angularjs开发常见问题-2(angularjs内置过滤器)
    经常使用 Java API
    Spring Boot JPA 连接数据库
    机房收费系统个人重构版:软工文档中那些图
    Android
    Spring Boot 动态数据源(多数据源自己主动切换)
    java的nio包的SelectionKey,Selector,SelectableChannel三者的缠绵关系概述
    初探linux子系统集之timer子系统(三)
    mobiscroll 案例git
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/9646314.html
Copyright © 2011-2022 走看看