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

 

posted @ 2018-11-18 23:05  Umbrellaox  阅读(2463)  评论(0编辑  收藏  举报