android meetup slovenia #5 - permissions in sdk 23 & android 6.0 by rihard gaberscek

10
Permissions in SDK 23 & Android 6.0 Rihard Gaberšček

Upload: infinum

Post on 08-Apr-2017

174 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Android Meetup Slovenia #5 - Permissions in SDK 23 & Android 6.0 by Rihard Gaberscek

Permissions in SDK 23 &

Android 6.0

Rihard Gaberšček

Page 2: Android Meetup Slovenia #5 - Permissions in SDK 23 & Android 6.0 by Rihard Gaberscek

Permissions in < SDK 23

• Before app install

• User had to accept all permissions

• Declare permissions in AndroidManifest.xml

Page 3: Android Meetup Slovenia #5 - Permissions in SDK 23 & Android 6.0 by Rihard Gaberscek

Permissions in SDK 23

• Activation during runtime

• Request dialog will not launch automatically

• User is also able to revoke the granted permission

• Normal permissions (INTERNET, BLUETOOTH ...) Link

• Dangerous permissions (CONTACTS, LOCATION ...) Link

Page 4: Android Meetup Slovenia #5 - Permissions in SDK 23 & Android 6.0 by Rihard Gaberscek

Android M perimission flowchart

Page 5: Android Meetup Slovenia #5 - Permissions in SDK 23 & Android 6.0 by Rihard Gaberscek

final private int REQUEST_CODE_ASK_PERMISSIONS = 123;

if (ContextCompat.checkSelfPermission(thisActivity,Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { // Should we show an explanation? if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity, Manifest.permission.READ_CONTACTS)) { // Show an expanation to the user *asynchronously* -- don't block // this thread waiting for the user's response! After the user // sees the explanation, try again to request the permission. } else { // No explanation needed, we can request the permission. ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.READ_CONTACTS}, REQUEST_CODE_ASK_PERMISSIONS);

// REQUEST_CODE_ASK_PERMISSIONS is an // app-defined int constant. The callback method gets the // result of the request. } }

Show request rationale

Page 6: Android Meetup Slovenia #5 - Permissions in SDK 23 & Android 6.0 by Rihard Gaberscek

Heandle permission request • @Override

public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { case MY_PERMISSIONS_REQUEST_READ_CONTACTS: { // If request is cancelled, the result arrays are empty. if (grantResults.length > 0 && grantResults[0]==PackageManager.PERMISSION_GRANTED) { // permission was granted, yay! Do the // contacts-related task you need to do. } else { // permission denied, boo! Disable the // functionality that depends on this permission. } return; } // other 'case' lines to check for other // permissions this app might request } }

Page 7: Android Meetup Slovenia #5 - Permissions in SDK 23 & Android 6.0 by Rihard Gaberscek

Permissions Best Practices

• Consider Using an Intent

• Only Ask for Permissions You Need

• Don't Overwhelm the User

• Explain Why You Need Permissions

• Test for Both Permissions Models

•Put the code in some util class

Page 9: Android Meetup Slovenia #5 - Permissions in SDK 23 & Android 6.0 by Rihard Gaberscek

Sources and Github

• http://inthecheesefactory.com/blog/things-you-need-to-know-about-android-m-permission-developer-edition/en

• https://developer.android.com/training/permissions/index.html

• https://github.com/rihardgDev/PermissionExamplesSdk23

Page 10: Android Meetup Slovenia #5 - Permissions in SDK 23 & Android 6.0 by Rihard Gaberscek

Thank you!