1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AndroidでPermissionをリクエストするとき

Posted at

AndroidでPermissionをリクエストするとき

ネットで探すと、未だにリクエストを開発者側でハンドリングする記事ばかり出てきます。

しかし公式ドキュメントでは、RequestPermissionRequestMultiplePermissionsのコントラクトを使用した方がいいと書いてあります。

従来からある方法では、権限リクエストの一部として開発者自身がリクエスト コードを管理し、このリクエスト コードを権限コールバックのロジックに含めます。別の方法として、AndroidX ライブラリに含まれる RequestPermission コントラクトを使用して、システムに権限リクエスト コードの管理を許可することもできます。RequestPermission コントラクトを使用するとロジックが簡素化されるため、可能な場合は使用することをおすすめします。

使用例は以下の通り
Kotlin + Jetpack Composeでの複数権限のリクエストの場合となります。

    private val requestPermissionLauncher = registerForActivityResult(
        ActivityResultContracts.RequestMultiplePermissions()
    ) { granted ->
        val notPermission = granted.filter {
            !it.value
        }.size
        if (notPermission != 0) {
            // 何かしらの権限が取得できなかった場合
        } else {
            // 正常に取得できた場合
        }
    }

    @Composable
    fun PermissionRequestButton() {
        Button(onClick = {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
                requestPermissionLauncher.launch(
                    arrayOf(
                        ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION,
                        WRITE_EXTERNAL_STORAGE, FOREGROUND_SERVICE
                    )
                )
            }
        }) {
            Text(text = "Permission Request")
        }
    }

## 参考

https://developer.android.com/training/permissions/requesting?hl=ja
https://qiita.com/irgaly/items/f98acbadb83c799cb666

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?