Share
Embed
Accompanistから考えるAndroidの権限許諾
Mikami Hiroki
August 21, 2023
Transcript
28 slides
-
Androidにおける権限 • プライバシーを保護するため、アプリがデバイスのリソース やデータにアクセスするために権限が必要 • Install-time permissionsやRuntime permissionsなど いつくかの種類がある [1]
Types of permissions, https://developer.android.com/guide/topics/permissions/overview#types -
Runtime permissions • 位置情報やマイク、カメラなど ユーザーに関する機密性の高い情報の 権限をユーザーから明示的に求める ◦ OS標準の許諾ダイアログで完結でき るとスムーズ [2]
Request runtime permissions, https://developer.android.com/training/permissions/requesting 権限の許諾状態に合わせて ハンドリングが必要 -
Permissions for Jetpack Compose [4] Permissions for Jetpack Compose, https://github.com/google/accompanist/tree/main/permissions
• ComposeでAndroidのruntime permissonを扱うライブラリ ◦ v0.24.2-alpha で大きな変更があるため注意 -
Runtime permissions のつらいところ • 考えることが多い • 2回連続で拒否された場合、OS標準の 許諾ダイアログが表示されなくなる※ ◦ 設定画面に遷移する必要
◦ 完全な拒否の状態を検知する標準 のAPIがない ※ 完全な拒否と呼ばれる。 Android 10以下では「今後表示しない」にチェックをつけた状態で拒否 -
Permissions for Jetpack Compose の特徴 • ライブラリのpublicな コード量が少ない • シンプルに記述できる
完全な拒否の考慮が不十分 (上手くハンドリングが行う方法がない) -
[6] [Permissions] Support an API to handle the "need settings"
for permission #1363, https://github.com/google/accompanist/issues/1363 完全な拒否をAccmpanistでハンドリ ングしたいという提案 -
完全な拒否に関する開発陣の考え・背景 • 完全な拒否のハンドリングは行わない ◦ Accompanistは銀の弾丸ではない[8] ◦ Android 12以降の位置情報の権限が複雑[9] [7] https://github.com/google/accompanist/issues/1363#issuecomment-1383769143
[8] [Permissions] [Idea] Support Android 12 handling of coarse/fine location permission #819, https://github.com/google/accompanist/issues/819 -
1回目のリクエスト • 許諾されていない & shouldShowRationaleがfalse • 拒否されても後がある ◦ OS標準の権限ダイアログを呼び出す •
権限が必要な理由は極力示すと良さそう ◦ ダイアログで根拠を示す場合など冗長になることが ◦ 位置情報の権限で正確な位置情報がほしいが おおよその位置情報が許諾されてしまうケース -
1度拒否された場合のリクエスト • 許諾されていない & shouldShowRationaleがtrue • 拒否されたら後がない ◦ 設定画面に誘導 •
権限が必要な理由を示すのは必要 ◦ 設定画面に誘導するために説明があった方が ユーザーに親切 -
References 1/2 • [1] Types of permissions, https://developer.android.com/guide/topics/permissions/overview#types • [2]
Request runtime permissions, https://developer.android.com/training/permissions/requesting • [3] Accompanist, https://github.com/google/accompanist • [4] Permissions for Jetpack Compose, https://github.com/google/accompanist/tree/main/permissions • [5] https://github.com/google/accompanist/blob/main/sample/src/main/java/com/google/accompanist/s ample/permissions/RequestPermissionSample.kt • [6] [Permissions] Support an API to handle the "need settings" for permission #1363, https://github.com/google/accompanist/issues/1363 -
References 2/2 • [7] https://github.com/google/accompanist/issues/1363#issuecomment-1383769143 • [8] [Permissions] [Idea] Support
Android 12 handling of coarse/fine location permission #819, https://github.com/google/accompanist/issues/819 • [9] Request runtime permissions, https://developer.android.com/training/permissions/requesting -
CREDITS: This presentation template was created by Slidesgo, including icons
by Flaticon, infographics & images by Freepik. Thanks!