示例中心
功能在线体验
控制台

Android 6.0动态申请权限

以定位权限和SD卡存储权限为例,展示如何在Android 6.0上动态申请权限。
00:00 / 01:00
扫描二维码在手机端体验功能
体验移动端 扫码体验移动端

使用场景

该示例主要展示 Android App 在6.0系统上如何申请动态权限,以定位权限和存储卡权限为例。

用到产品

Android 定位 SDK Android 地图 SDK

核心类/接口

暂无。

核心难点

1、声明目标SDK版本

Android 6.0系统默认为targetSdkVersion小于23的应用默认授予了所申请的所有权限,所以如果您APP设置的targetSdkVersion低于23,在运行时也不会崩溃。

Android Studio:

在build.gradle中声明targetSdkVersion为23。

android {
    compileSdkVersion 23
    buildToolsVersion '23.0.1'
 
    defaultConfig {
        applicationId "com.amap.location.demo"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "2.5.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

Eclipse:

在AndroidManifest.xml中声明targetSdkVersion为23。


<uses-sdk android:minsdkversion="14" android:targetsdkversion="23">
</uses-sdk>

2、检查并申请权限:

详见本篇 Android 示例com.amap.requestpermissions.MainActivity类的checkLocationPermission()方法和checkStoragePermission()方法。

3、用户授权

此处以申请SD卡存储权限为示例,需要用户点击允许或者禁止,如下图:

4、接收回调

当用户点击了上一步的提示框之后,程序会收到系统方法的回调。您可以在回调中做进一步的业务处理。

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    //可在此继续其他操作。
}