【Android开发】EasyPermissions 请求权限
2024-09-07 00:52:30
安卓6.0以后,开发应用的时候,仅在AndroidManifest.xml中申请权限已经不可以了,需要在代码中动态申请。
现在看一个google推出的机制:EasyPermissions
引入步骤:
1. 导入库文件:
dependencies {
compile 'pub.devrel:easypermissions:1.0.1'
}
2. 实现 EasyPermissions.PermissionCallbacks
public class MainActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks {
String[] perms = {Manifest.permission.CAMERA, Manifest.permission.ACCESS_FINE_LOCATION};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (EasyPermissions.hasPermissions(this, perms)) {
// Already have permission, do the thing
// ...
} else {
// Do not have permissions, request them now
EasyPermissions.requestPermissions(this, getString(R.string.camera_and_location_rationale),
RC_CAMERA_AND_LOCATION, perms);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
// 将权限的处理交给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.hasPermissions(this, perms),查看是否已经获取了权限;
- 如果没有授权,则通过 EasyPermissions.requestPermissions(.....)方法请求权限;
- 处理请求的是onRequestPermissionsResult,它会将处理转交给EasyPermissions.onRequestPermissionsResult(.....);
- 获取处理结果,如果授权,则执行onPermissionsGranted,未授权,则执行onPermissionsDenied;
Git地址请见:https://github.com/googlesamples/easypermissions#installation
最新文章
- MAC PRO 的网关在哪里
- “stdafx.h”: No such file or directory
- SQL语句---nvl 用法
- 2013 imac 安装 win7
- 设计模式学习--复合模式(Compound Pattern)
- Hadoop认知--在不同的阶段
- Traceback (most recent call last): File ";c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\_vendored\pydevd\_pydevd_bundle\pyd
- RobotFramework&#160;RobotFramework官方demo&#160;Quick&#160;Start&#160;Guide浅析
- AspNet mvc的一个bug
- R语言绘图(FZ)
- TODO java 作业-梭哈--待完成
- APP加急审核
- Linux ssh命令
- 自定义mysql类用于快速执行数据库查询以及将查询结果转为json文件
- Java实现字符串倒序输出的几种方法
- xpath获取带注释的text
- oracle 查看临时表空间temp 的使用情况以及扩展表空间
- 【ARC079F】Namori Grundy
- Android开发之使用Intent进行自定义类型数据传输
- 如何使cmd窗口正确显示utf-8编码的文字