zoukankan      html  css  js  c++  java
  • 【Android开发】EasyPermissions 请求权限

    安卓6.0以后,开发应用的时候,仅在AndroidManifest.xml中申请权限已经不可以了,需要在代码中动态申请。

    现在看一个google推出的机制:EasyPermissions

    引入步骤:

    1. 导入库文件:
    dependencies {
        compile 'pub.devrel:easypermissions:1.0.1'
    }
    
    2. 实现 EasyPermissions.PermissionCallbacks
    public class MainActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks {
    
        String[] perms = {Manifest.permission.CAMERA, Manifest.permission.ACCESS_FINE_LOCATION};
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            if (EasyPermissions.hasPermissions(this, perms)) {
                // Already have permission, do the thing
                // ...
            } else {
                // Do not have permissions, request them now
                EasyPermissions.requestPermissions(this, getString(R.string.camera_and_location_rationale),
                    RC_CAMERA_AND_LOCATION, perms);
            }
        }
    
        @Override
        public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    
            // 将权限的处理交给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
            // ...
        }
    }
    

    流程讲解:

    1. 首先通过EasyPermissions.hasPermissions(this, perms),查看是否已经获取了权限;
    2. 如果没有授权,则通过 EasyPermissions.requestPermissions(.....)方法请求权限;
    3. 处理请求的是onRequestPermissionsResult,它会将处理转交给EasyPermissions.onRequestPermissionsResult(.....);
    4. 获取处理结果,如果授权,则执行onPermissionsGranted,未授权,则执行onPermissionsDenied;

    Git地址请见:https://github.com/googlesamples/easypermissions#installation

  • 相关阅读:
    sklearn学习笔记
    概率生成模型GAN
    机器学习的种类
    如何为React提交pull request
    webpack define Plugin
    Saas应用方法论12条
    React Ref 和 React forwardRef
    几个数组去重的方法
    级数笔记
    信号量及P/V操作
  • 原文地址:https://www.cnblogs.com/neo-java/p/10184966.html
Copyright © 2011-2022 走看看