Document Maps SDK for Android Guides Utility Tools Permissions

Permissions

Android 6.0 (API level 23) introduced a runtime permissions model that requires apps to request certain permissions—including location permissions—at runtime, in addition to declaring them in AndroidManifest.xml.

Set the Target SDK Version

For apps with targetSdkVersion set to less than 23, Android 6.0 automatically grants all permissions declared in the manifest at install time. This means such apps will not crash on Android 6.0 devices due to missing runtime permissions.

Android Studio

Declare targetSdkVersion as 23 in your build.gradle file:

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

Declare targetSdkVersion as 23 in your AndroidManifest.xml file:

<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" />

Check and Request Permissions for Displaying a Map

Before using the map, you must check and request the required permissions at runtime. The following example demonstrates how to declare the necessary permissions in AndroidManifest.xml:

<!-- Required permissions for the map and search packages -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<!-- Additional permissions required for the location and navigation packages (the base permissions above are also required) -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

Note: For a complete guide on implementing runtime permission requests in your app, refer to the [Android developer documentation on requesting permissions](https://developer.android.com/training/permissions/requesting).