最近はパーミッション関連の処理が随分と簡潔に書けるようになったのは嬉しいのだけれども、なにが困るってJavaで書かなければならない時に少し混乱することがあるのでチートシートとして
- ActivityResultContracts.RequestMultiplePermissions | Android Developers
- Getting a result from an activity | Android Developers
Java
private final ActivityResultLauncher<String[]> requestPermissionsLauncher =
registerForActivityResult(
new ActivityResultContracts.RequestMultiplePermissions(),
(Map<String, Boolean> grantStates) -> {
for (Map.Entry<String, Boolean> grantState : grantStates.entrySet()) {
Timber.d(grantState.getKey() + " - " + grantState.getValue());
}
});
private void requestPermissions() {
requestPermissionsLauncher.launch(new String[]{
Manifest.permission.Foo,
Manifest.permission.Bar
});
}
Kotlin
private val requestPermissionsLauncher =
registerForActivityResult(RequestMultiplePermissions()) { grantStates: Map<String, Boolean> ->
for ((permission, granted) in grantStates) {
Timber.d("$permission - $granted")
}
}
private fun requestPermissions() {
requestPermissionsLauncher.launch(arrayOf(
Manifest.permission.Foo,
Manifest.permission.Bar
))
}