zoukankan      html  css  js  c++  java
  • Android:用EasyPermissions快速获取权限

    用EasyPermissions可以方便的请求多个权限.

    最近项目中碰到的代码.贴在这里当个例子.

    大神的解说:https://blog.csdn.net/hexingen/article/details/78504814

    在build.gradle中添加依赖:

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

    最开始还是在AndroidManifest.xml写进自己需要的权限:

       <uses-permission android:name="android.permission.CAMERA" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

    在Activity中.

    首先建一个String数组,把需要的权限都加进去:

    private String[] mPerms = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE,
                Manifest.permission.CAMERA, Manifest.permission.ACCESS_WIFI_STATE};

    private static final int PERMISSIONS = 100;  //请求码
     

    请求权限:

    //请求所需权限
        @AfterPermissionGranted(PERMISSIONS)
        private void requestPermission() {
            if (EasyPermissions.hasPermissions(this, mPerms)) {
                //Log.d(TAG, "onClick: 获取读写内存权限,Camera权限和wifi权限");
            } else {
                EasyPermissions.requestPermissions(this, "获取读写内存权限,Camera权限和wifi权限", PERMISSIONS, mPerms);
        //
    • 第一个参数:Context对象
    • 第二个参数:权限弹窗上的文字提示语。告诉用户,这个权限用途。
    • 第三个参数:这次请求权限的唯一标示,code。
    • 第四个参数 : 一些系列的权限
    
            }
        }

    在onResume()中调用requestPermission():

     protected void onResume() {
            super.onResume();
            requestPermission();
    }

    当请求成功是调用这个方法:

    @Override
        public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
            if (requestCode == PERMISSIONS) {
                Log.d(TAG, "onPermissionsGranted: 获取权限");
            }
        }

    请求被拒绝时调用这个方法:

    @Override
        public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
            Log.d(TAG, "onPermissionsDenied: 拒绝权限");
            if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
                new AppSettingsDialog.Builder(this)
                        .setRationale("没有该权限,此应用程序可能无法正常工作。打开应用设置屏幕以修改应用权限")
                        .setTitle("必需权限")
                        .build()
                        .show();
            }
        }    

    权限结果是回调在onRequestPermissionsResult()方法中:

    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
            EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
        }

  • 相关阅读:
    Ubuntu 12.04 下 Sublime Text 3 Build 3047 破解
    如何让Ubuntu 12.04 LTS更炫更具吸引力
    重装Ubuntu时如何保留/home分区中的数据
    【转】使用TCP协议连续传输大量数据时,是否会丢包,应如何避免?
    TCP协议三次握手过程分析
    狮子的预言
    来跟从我
    服役的灵
    追求良善
    安慰人心的主
  • 原文地址:https://www.cnblogs.com/Ravenzzz/p/9980312.html
Copyright © 2011-2022 走看看