Android6以降の権限リクエストの書き方
最近Androidで権限リクエストに関するコードをkotlinで書いたので記載
色々書き方があるみたいだが、最近はランチャーを使った権限の取得の仕方をするみたい
この方法だと、onRequestPermissionResultハンドラーなどを使わないため
デベロッパーがリクエストコードを管理しなくてもいいらしい
まず許可・拒否の結果を受けとるコールバックをランチャーに登録する
1
2
3
4
5
6
7
8
9
|
val requestPermissionLauncher =
registerForActivityResult(RequestPermission()
) { isGranted: Boolean ->
if (isGranted) {
// 許可時の処理
} else {
// 拒否時の処理
}
}
|
権限を確認したい場所に
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
when {
ContextCompat.checkSelfPermission(
CONTEXT,
Manifest.permission.REQUESTED_PERMISSION
) == PackageManager.PERMISSION_GRANTED -> {
// 許可された場合に実行
}
ActivityCompat.shouldShowRequestPermissionRationale(
this, Manifest.permission.REQUESTED_PERMISSION) -> {
// 説明UIを表示する必要がある場合に表示する
// なぜ権限が必要なのかを表示するダイアログなどを出し
// OKを押した場合は権限のリクエスト、キャンセルの場合は
// 何もせず継続させるUI等を表示させる
showInContextUI()
}
else -> {
// 権限のリクエスト
requestPermissionLauncher.launch(
Manifest.permission.REQUESTED_PERMISSION)
}
}
|