You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
3.8 KiB
90 lines
3.8 KiB
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
Copyright 2015 The Android Open Source Project
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
<sample>
|
|
<name>RuntimePermissions</name>
|
|
<group>System</group>
|
|
<package>com.example.android.system.runtimepermissions</package>
|
|
|
|
<minSdk>15</minSdk>
|
|
|
|
<dependency>com.android.support:support-v4:24.0.0</dependency>
|
|
<dependency>com.android.support:design:24.0.0</dependency>
|
|
|
|
<strings>
|
|
<intro>
|
|
<![CDATA[
|
|
This sample shows runtime permissions available in Android M and above.
|
|
Display the log on screen to follow the execution.
|
|
If executed on an Android M device, an additional option to access contacts is shown
|
|
that is declared with optional, M and above only permissions.
|
|
]]>
|
|
</intro>
|
|
</strings>
|
|
|
|
<template src="base-build"/>
|
|
|
|
<metadata>
|
|
<status>PUBLISHED</status>
|
|
<categories>System</categories>
|
|
<technologies>Android</technologies>
|
|
<languages>Java</languages>
|
|
<solutions>Mobile</solutions>
|
|
<level>BEGINNER</level>
|
|
<icon>screenshots/big_icon.png</icon>
|
|
<screenshots>
|
|
<img>screenshots/screenshot-1.png</img>
|
|
<img>screenshots/screenshot-2.png</img>
|
|
</screenshots>
|
|
<api_refs>
|
|
<android>android.app.Activity</android>
|
|
<android>android.support.v4.app.ActivityCompat</android>
|
|
<android>android.Manifest.permission</android>
|
|
</api_refs>
|
|
|
|
<description>
|
|
<![CDATA[
|
|
This sample shows runtime permissions available in Android M and above.
|
|
It shows how to check and request permissions at runtime, handle backwards compatibility using the
|
|
support library and how to declare optional permissions for M-devices only.
|
|
]]>
|
|
</description>
|
|
|
|
<intro>
|
|
<![CDATA[
|
|
Android M introduced runtime permissions. Applications targeting M and above need to request their
|
|
permissions at runtime.
|
|
All permissions still need to be declared in the AndroidManifest. However, when accessing APIs that
|
|
require a permission, the Activity or Fragment has to verify that the permission has been granted
|
|
or request the missing permissions using calls through the support library. Permissions are checked
|
|
through ActivityCompat#checkSelfPermission(Context, String) or
|
|
ContextCompat#checkSelfPermission(Context, String).
|
|
Permission are requested through ActivityCompat#requestPermissions(Activity, String[], int), and the response
|
|
received in a callback to ActivityCompat.OnRequestPermissionsResultCallback#onRequestPermissionsResult(int, String[], int[]).
|
|
Applications can provide an additional rational for the use of permissions after calling
|
|
ActivityCompat#shouldShowRequestPermissionRationale(Activity,String). This call will return true if the
|
|
application should provide the user with more context on why the requested permissions is needed,
|
|
for example if the permission request has been denied before.
|
|
|
|
If an application targets an SDK below M, all permissions are granted at runtime and are available
|
|
when the application is running. The support library calls handle these checks appropriately.
|
|
However, if permissions have been turned off in the system settings
|
|
for an application targeting an SDK below M, the API will return empty or no data.
|
|
]]>
|
|
</intro>
|
|
</metadata>
|
|
</sample>
|