Runtime Permission
Android 6.0版本引入了动态权限获取机制(Runtime Permission),并引入了新的API来让开发者使用这一功能。
开发者使用相应API后,系统会自动弹出对话框,提示用户授予权限。
在以往的Android版本中,checkPermission接口主要是读取Manifest文件中的权限声明,来判断当前应用权限的;对于很多手机内置手机管家中的权限管理功能,无法正确判断。新的API就可以解决这样的问题(仅限6.0版本)。
适配特点
新增的API以及系统机制,对于老版本APP适配也有一定策略,总的来说如下:
在Android 6.0中,若安装APP的targetAPI 小于23,则默认不限制权限。用户需要通过系统设置手工控制权限;
若安装APP的targetAPI为23,则需要开发者编写代码,适配Runtime Permission。在恰当处调用,以弹出对话框提示用户授权。若不适配则默认权限关闭。
调用步骤
Runtime Permission不仅提供了API函数供开发者主动调用,在Activity中也提供了回调函数供我们实现业务逻辑,大体来说,适配的步骤如下:
1. 判断系统API版本,检查权限状态,决定是否调用动态权限接口
2. 调用接口获取权限
3. Activity回调函数中实现业务逻辑
Demo实现
这里使用API实现一个简单的Demo。首先我们在默认Activity中添加一个按钮:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.runtimepermissiontest.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height=