Easypermissions使用

本文介绍AndroidM系统中权限管理的变化,特别是针对“DangerousPermission”的运行时申请方式,并提供了具体的实现步骤和代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android M对权限系统进行了改变。Android M之前所需权限只需要在AndroidManifest中申请即可。但更新Android M系统后,部分“Dangerous Permission”需要在运行时询问申请。

使用方法:

首先:引用库

//6.0以上的权限申请
compile 'pub.devrel:easypermissions:0.3.0'

 注:easypermissions处理权限分为3步
/**
 * 请求CAMERA权限码
 */
public static final int REQUEST_CAMERA_PERM = 101;

第一步:
//1.检查权限

if (EasyPermissions.hasPermissions(getActivity(), Manifest.permission.CAMERA)) {
    Intent intentscan = new Intent(getActivity(), SecondActivity.class);
    startActivityForResult(intentscan, REQUEST_CODE);
} else {
//2.申请权限
    EasyPermissions.requestPermissions(this, "需要请求相机权限", REQUEST_CAMERA_PERM, Manifest.permission.CAMERA);
}
//3.实现EasyPermissions.PermissionCallbacks接口,直接处理权限是否成功申请
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
// Forward results to 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
// ...
}





### EasyPermissions Android 权限管理库使用教程 #### 1. 添加依赖项 为了在项目中集成 `EasyPermissions`,需根据使用的支持库版本,在项目的构建文件 `build.gradle` 中添加相应的依赖: 对于使用 **AndroidX** 的应用程序: ```gradle dependencies { implementation &#39;pub.devrel:easypermissions:3.0.0&#39; } ``` 而对于未迁移至 AndroidX 的传统应用,则应采用如下配置[^5]: ```gradle dependencies { implementation &#39;pub.devrel:easypermissions:2.0.1&#39; } ``` #### 2. 请求权限的方法调用 当需要请求特定权限时,可以通过继承自 `AppCompatActivity` 或者实现了 `EasyPermissions.PermissionCallbacks` 接口的 Activity/Fragment 调用方法来进行。 例如,要获取相机访问权可编写如下代码片段: ```java String[] perms = {Manifest.permission.CAMERA}; EasyPermissions.requestPermissions(this, "我们需要摄像头权限来拍照", RC_CAMERA_PERM, perms); ``` 此处 `"我们需要摄像头权限来拍照"` 是提示用户的说明文字;`RC_CAMERA_PERM` 则作为回调标识符用于区分不同类型的权限请求操作[^1]。 #### 3. 处理用户授权结果 一旦用户做出回应,无论同意与否都会触发 `onRequestPermissionsResult()` 方法。此时应该重写此函数并利用 `EasyPermissions.onRequestPermissionsResult()` 去解析返回的结果集。 如果一切正常,即获得了所需权限,则继续执行后续逻辑;反之则给予适当反馈给用户知道为什么这些权限很重要以及如何授予它们。 ```java @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); // Forward results to EasyPermissions so it can handle them. EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); } // Implement PermissionCallbacks interface methods here... @Override public void onPermissionsGranted(int requestCode, List<String> list) { Log.d(TAG, "Permissions granted."); } @Override public void onPermissionsDenied(int requestCode, List<String> list) { // (Optional) Check whether the user denied any of the permissions and checked "NEVER ASK AGAIN". if (EasyPermissions.somePermissionPermanentlyDenied(this, list)) { new AppSettingsDialog.Builder(this).build().show(); } } ``` #### 4. 解决常见问题 - 如果遇到某些设备上无法弹出权限对话框的情况,请确保目标 SDK 版本设置正确,并且已按照官方文档完成所有必要的初始化工作。 - 对于部分国产机型可能存在特殊处理机制,建议查阅相关厂商提供的开发指南以获得最佳实践指导[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值