`
xuanzhui
  • 浏览: 201403 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Android权限控制EasyPermissions

阅读更多

EasyPermissions项目地址 https://github.com/googlesamples/easypermissions

 

1. 在AndroidManifest定义权限

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

 

2. 在需要权限的方法前添加注解 @AfterPermissionGranted   ,该注解需要传入requestCode,用于区分请求

@AfterPermissionGranted(200)
void reqScanCamera() {
    String[] perms = {Manifest.permission.CAMERA};
    if (EasyPermissions.hasPermissions(this, perms)) {
        // 如果拥有权限
    } else {
        // 如果没有权限
        EasyPermissions.requestPermissions(this, "您必须授权开启摄像头权限,才能进行下一步操作", 200, perms);
    }
}

 

EasyPermissions.requestPermissions 第二个参数的作用:

当用户第一次拒绝后,第二次再请求权限时,弹出对话框,提示用户请求权限的原因,用户点击确定后,会自动弹出权限的系统请求。



 

 

但坑爹的是,各大手机厂商的定制系统对该逻辑进行了一定的改动,例如红米Note4的MIUI系统当用户首次选择拒绝权限之后就会“不再询问”了,华为EMUI系统在首次弹出权限请求时就会提供“不再询问”的选项。此时就需要判断APP的某个权限是否处于“不再询问”的状态,从而引导用户去APP设置里面开启权限。

 

判断方法是 EasyPermissions.somePermissionPermanentlyDenied

但是务必注意,该方法一定要在得知权限被拒之后执行,原因是该方法就是在判断是否应该出现上方的图片提示,如果权限被拒绝了,同时不允许出现上方的图片提示,则认为该权限的状态就是“不再询问”

 

综上,通过如下第三点,处理不再询问的权限

 

3. 实现 EasyPermissions.PermissionCallbacks,定义权限被拒和允许时的操作,和判断“不再询问”状态

public class FaceIDFontActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks {
    // ... some other code ...

    @Override
    public void onPermissionsGranted(int requestCode, List<String> perms) {
        Log.d(TAG, "onPermissionsGranted:" + requestCode + ":" + perms.size());
    }

    @Override
    public void onPermissionsDenied(int requestCode, List<String> perms) {
        Log.d(TAG, "onPermissionsDenied:" + requestCode + ":" + perms.size());

        // (Optional) Check whether the user denied any permissions and checked "NEVER ASK AGAIN."
        // This will display a dialog directing them to enable the permission in app settings.
        if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
            new AlertDialog.Builder(this)
                    .setTitle("权限提示")
                    .setMessage("本项认证需要摄像头权限,点击确认后在新页面滑动到最下方,在权限管理处,开启相机权限")
                    .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            finish();
                        }
                    })
                    .setPositiveButton("确认", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // 跳转到APP设置页面
                            Intent intent = new Intent();
                            intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                            Uri uri = Uri.fromParts("package", getPackageName(), null);
                            intent.setData(uri);
                            startActivity(intent);
                        }
                    })
                    .create().show();
        }

    }
}

 

 

 

 

 

  • 大小: 53.2 KB
分享到:
评论

相关推荐

    Android 权限检查EasyPermissions

    Android 权限检查EasyPermissions ,Android 6.0之前的系统用户在安装apk文件时会根据app声明的权限声称权限列表,用户只有在同意了申请的权限后才可以继续安装应用。这样就存在了很大的安全隐患。因此在android 6.0...

    EasyPermissions:简化Android M系统权限-开源

    EasyPermissions 是一个包装库,用于在面向 Android M 或更高版本时简化基本系统权限逻辑。 如果您的应用程序是用 Kotlin 编写的,请考虑使用 easypermissions-ktx 库,它将 Kotlin 扩展添加到核心 EasyPermissions ...

    官方推荐的android 6.0 权限获取方式(实例demo:easypermissions)

    博客地址:http://blog.csdn.net/u013100574/article/details/53314209。官方推荐的android 6.0 权限获取方式(实例demo:easypermissions)

    easypermission android动态申请权限

    android6.0 开始,权限的申请发生了改变,申请变的动态化,也就是运行时权限,EasyPermission 可以帮助简化权限申请的流程,同时使得代码更加具有逻辑。对申请的结果进行统一的返回。而且当用户拒绝了权限,任然可以...

    Android EasyPermissions官方库高效处理权限相关教程

    10. 版本兼容性:EasyPermissions库适用于Android M及更高版本,对于低于Android M的版本,权限管理的策略不同,不需要运行时权限请求。 总结:Android EasyPermissions官方库是一个非常实用的工具,它简化了...

    EasyPermissions

    `EasyPermissions`是一个方便开发者处理这一复杂问题的库,它简化了Android应用在运行时请求用户权限的过程。 `EasyPermissions`是由Google开发并维护的一个开源项目,其主要目标是使Android应用的权限请求变得简单...

    Android权限检测

    Android权限检测是指通过特定工具或程序来检查应用程序是否具备运行所需的各种权限,以及这些权限的使用情况。本篇文章将详细探讨Android权限检测的重要性、原理、实现方式及相关的开发实践。 首先,Android权限...

    好用的权限处理android6.0

    `easypermissions`库为Android 6.0以上的权限管理提供了一个方便的解决方案,使开发者能够更加专注于应用的业务逻辑,而不是纠结于复杂的权限请求代码。通过使用这个库,应用可以优雅地处理运行时权限请求,提高用户...

    基于EasyPermissions库的Android6.0动态权限申请程序设计源码

    该项目是一个基于EasyPermissions库的Android 6.0动态权限申请程序设计源码,包含57个文件,包括26个XML配置文件、10个PNG图片文件、5个Gradle构建脚本、4个Java源文件以及其他必要配置文件。该程序旨在实现简单高效...

    Android运行时获取权限框架

    运行时权限管理旨在增强用户对应用权限的控制,让用户在安装应用后还能根据需要动态授予或撤销特定权限。在这一背景下,开发者需要在应用中适配这一新模型,确保应用在需要使用敏感权限时能够正确请求并处理用户的...

    Android6.0 动态获取权限

    10. **权限管理库**:为了简化权限管理,开发者可以使用第三方库,如`AndroidX Permission`或`EasyPermissions`,它们提供了更方便的方式来处理权限请求和检查。 通过理解并熟练运用以上知识点,开发者可以创建出...

    android权限检测(简单明了)

    标题中的"android权限检测"指的是这个过程,确保应用在执行特定功能前获取到相应的权限。 谷歌为了简化这个过程,提供了一个名为EasyPermissions的库文件。EasyPermissions是Google支持的Android库,它为开发者提供...

    Android动态权限三方库demo下载

    三方库通常会简化上述流程,例如`PermissionsDispatcher`、`EasyPermissions`等,它们提供了更友好的API,使开发者能更专注于业务逻辑,而不是权限管理的细节。 `PermissionsDemo`这个项目可能包含了一个或多个这样...

    android 6.0 权限适配工具

    `easypermissions`库是一个常用的Android权限管理库,它简化了在Android 6.0及更高版本中处理运行时权限的流程。此库提供了一种简单的方式来请求和处理权限,减少了开发者的工作量。在项目中集成`easypermissions`,...

    easypermissions

    `easypermissions`库就是为了解决这个问题而诞生的,它是一个简洁且易于使用的库,帮助开发者更方便地处理Android 6.0及更高版本的动态权限申请。 `easypermissions`库的主要特点和功能包括: 1. **简化API调用**...

    Android 6.0运行时权限处理与封装(一)

    Android权限分为两种类型:正常权限和危险权限。正常权限不会对用户隐私造成直接影响,系统会在安装时自动授予。而危险权限涉及到用户敏感信息或系统功能,需要在运行时由用户授权。例如,访问联系人、位置等属于...

    简化的Android M系权限.zip

    总的来说,"简化的Android M系权限"项目通过EasyPermissions库,为开发者提供了一个简洁、高效的方式来处理Android M及以上版本的运行时权限问题,使他们能专注于应用的核心功能开发,而不是被繁琐的权限管理牵扯...

    easypermissions:简化Android M系统权限

    EasyPermissions EasyPermissions是一个包装器库,用于简化针对Android M或更高版本的基本系统权限逻辑。 注意:如果您的应用是用Kotlin编写的,请考虑库,该库将Kotlin扩展添加到核心EasyPermissions库中。安装通过...

    Android6.0后的权限管理库

    但在Android 6.0之后,系统引入了运行时权限,使得用户可以在应用运行时对权限进行逐一授权或拒绝,提高了用户对隐私的控制权。 针对这种变化,开发者需要处理两个关键问题:一是如何在适当的时候向用户请求权限,...

Global site tag (gtag.js) - Google Analytics