29
New Android Permission model @takuji31

Android new permission model

Embed Size (px)

Citation preview

Page 1: Android new permission model

New Android Permission model@takuji31

Page 2: Android new permission model

About me

• @takuji31 (Takuji Nishibayashi)

• Fenrir Inc.

• NNID: takuji31

• Udemae: S / Rank: 40

• Loves Android / Kotlin

Page 3: Android new permission model

Kotlin 1.0.0-beta released 🎉

Page 4: Android new permission model

Android 6.0 (Marshmallow) released 🎉

Page 5: Android new permission model

New features

Page 6: Android new permission model

Now on Tap

Page 7: Android new permission model

Fingerprint

Page 8: Android new permission model

New Permission model

Page 9: Android new permission model

targetSdkVersion >= 23

Page 10: Android new permission model

Normal permissions automatically granted

Page 11: Android new permission model

Danger permission needs request at runtime

Page 12: Android new permission model

Storage

Page 13: Android new permission model

Phone

Page 14: Android new permission model

Camera

Page 15: Android new permission model

Location

Page 16: Android new permission model

Calendar

Page 17: Android new permission model

Contacts

Page 18: Android new permission model

etc.

Page 19: Android new permission model

https://developer.android.com/intl/ja/guide/topics/security/permissions.html#normal-dangerous

Page 20: Android new permission model

Permission grant flow

Page 21: Android new permission model

Check -> Request -> Grant

Page 22: Android new permission model

Check

Page 23: Android new permission model

Check permission status

// In Activity int permission = ContextCompat.checkSelfPermission( this, Manifest.permission.WRITE_EXTERNAL_STORAGE );

if (permission != PackageManager.PERMISSION_GRANTED) { // not granted} else { // granted or pre-Marshmallow}

Page 24: Android new permission model

Request

Page 25: Android new permission model

Request permission

if ( ActivityCompat.shouldShowRequestPermissionRationale( this, Manifest.permission.WRITE_EXTERNAL_STORAGE ) ) { // should show rationale} else { // needs request permission ActivityCompat.requestPermissions( this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE );}

Page 26: Android new permission model
Page 27: Android new permission model

Grant

Page 28: Android new permission model

Check permission granted

// In Activity @Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == PERMISSION_REQUEST_CODE) { int grantResult = grantResults[0]; String statusString = toStatusString(grantResult); statusTextView.setText(statusString); if ( grantResults.length > 0 && grantResult == PackageManager.PERMISSION_GRANTED ) { // granted } else { // not granted } }}

Page 29: Android new permission model

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