安卓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
// ...
}
}

流程讲解:

  1. 首先通过EasyPermissions.hasPermissions(this, perms),查看是否已经获取了权限;
  2. 如果没有授权,则通过 EasyPermissions.requestPermissions(.....)方法请求权限;
  3. 处理请求的是onRequestPermissionsResult,它会将处理转交给EasyPermissions.onRequestPermissionsResult(.....);
  4. 获取处理结果,如果授权,则执行onPermissionsGranted,未授权,则执行onPermissionsDenied;

Git地址请见:https://github.com/googlesamples/easypermissions#installation

最新文章

  1. MAC PRO 的网关在哪里
  2. “stdafx.h”: No such file or directory
  3. SQL语句---nvl 用法
  4. 2013 imac 安装 win7
  5. 设计模式学习--复合模式(Compound Pattern)
  6. Hadoop认知--在不同的阶段
  7. Traceback (most recent call last): File &quot;c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\_vendored\pydevd\_pydevd_bundle\pyd
  8. RobotFramework&#160;RobotFramework官方demo&#160;Quick&#160;Start&#160;Guide浅析
  9. AspNet mvc的一个bug
  10. R语言绘图(FZ)
  11. TODO java 作业-梭哈--待完成
  12. APP加急审核
  13. Linux ssh命令
  14. 自定义mysql类用于快速执行数据库查询以及将查询结果转为json文件
  15. Java实现字符串倒序输出的几种方法
  16. xpath获取带注释的text
  17. oracle 查看临时表空间temp 的使用情况以及扩展表空间
  18. 【ARC079F】Namori Grundy
  19. Android开发之使用Intent进行自定义类型数据传输
  20. 如何使cmd窗口正确显示utf-8编码的文字

热门文章

  1. JZ-003-从尾到头打印链表
  2. 使用PostgreSQL 脚本导出数据库的DDL
  3. gitee 的使用
  4. htm5基本学习
  5. 自己的markdown笔记
  6. Clickhouse 与 Kafka 的数据同步
  7. Spring Boot 中初始化资源的几种方式
  8. java-快捷操作
  9. 修改vue的url
  10. 关于List、Set、Map接口讲解