• 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);
        }

  • 相关阅读:
    MVC,MVP,MVVM的区别
    jQuery Mobile 实现苹果滑动删除闹钟功能的几点总结
    AngularJS执行流程详解
    基于angularJS的表单验证练习
    jQuery 中 attr() 和 prop() 方法的区别
    天猫消息盒子的CSS实现
    jQuery事件之传递参数
    浅谈js中的垃圾两种回收机制
    js中的DOM操作汇总
    log4net
  • 原文地址:https://www.cnblogs.com/Ravenzzz/p/9980312.html
Copyright © 2020-2023  润新知