2023/01/05

Android の権限ダイアログで2度「許可しない」が選択されたことを検知する方法

Android 6.0 (API Level 23) 以降、マイクの使用許可などプライバシーに関わるような権限はアプリの中から個別に許可を求めなければいけなくなりました。具体的には以下のようなコードを実行すると上記のようなダイアログが表示されます1。(permissionLauncher の実装は後半を参照)

1
2
3
4
5
6
val granted = ContextCompat.checkSelfPermission(
    requireContext(), Manifest.permission.RECORD_AUDIO
)
if (granted != PackageManager.PERMISSION_GRANTED) {
    permissionLauncher.launch(Manifest.permission.RECORD_AUDIO)
}

以前は毎回このコードを実行することでダイアログを表示することが出来ていたのですが、Android 11 (API Level 30) 以降、ユーザーが2度「許可しない」を選択すると、次からはダイアログが表示されなくなってしまいました。