android new permission model
TRANSCRIPT
![Page 1: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/1.jpg)
New Android Permission model@takuji31
![Page 2: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/2.jpg)
About me
• @takuji31 (Takuji Nishibayashi)
• Fenrir Inc.
• NNID: takuji31
• Udemae: S / Rank: 40
• Loves Android / Kotlin
![Page 3: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/3.jpg)
Kotlin 1.0.0-beta released 🎉
![Page 4: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/4.jpg)
Android 6.0 (Marshmallow) released 🎉
![Page 5: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/5.jpg)
New features
![Page 6: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/6.jpg)
Now on Tap
![Page 7: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/7.jpg)
Fingerprint
![Page 8: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/8.jpg)
New Permission model
![Page 9: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/9.jpg)
targetSdkVersion >= 23
![Page 10: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/10.jpg)
Normal permissions automatically granted
![Page 11: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/11.jpg)
Danger permission needs request at runtime
![Page 12: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/12.jpg)
Storage
![Page 13: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/13.jpg)
Phone
![Page 14: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/14.jpg)
Camera
![Page 15: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/15.jpg)
Location
![Page 16: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/16.jpg)
Calendar
![Page 17: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/17.jpg)
Contacts
![Page 18: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/18.jpg)
etc.
![Page 19: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/19.jpg)
https://developer.android.com/intl/ja/guide/topics/security/permissions.html#normal-dangerous
![Page 20: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/20.jpg)
Permission grant flow
![Page 21: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/21.jpg)
Check -> Request -> Grant
![Page 22: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/22.jpg)
Check
![Page 23: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/23.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/24.jpg)
Request
![Page 25: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/25.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/26.jpg)
![Page 27: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/27.jpg)
Grant
![Page 28: Android new permission model](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/28.jpg)
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](https://reader030.vdocument.in/reader030/viewer/2022033105/58ef83b01a28ab18418b45d3/html5/thumbnails/29.jpg)
see https://developer.android.com/training/permissions/index.html