override fun onActivityResult(requestCode:
Int, resultCode: Int, data: Intent?) {
when {
resultCode != Activity.RESULT_OK ->
return
requestCode == REQUEST_CONTACT &&
data != null -> {
...
}
requestCode == REQUEST_PHOTO -> {
updatePhotoView()
}
}
}
...
}
Теперь, когда приложение камеры завершило запись в файл,
можно отозвать разрешение и снова перекрыть доступ к файлу.
Выполните это с
помощью функции
onActivityResult(…)
,
чтобы отозвать разрешение в
случае действительного
результата, а
также с помощью
onDetach()
,
чтобы скрыть
вероятность неверного отклика.
Листинг 16.17. Отзыв разрешений URI (CrimeFragment.kt)
class
CrimeFragment
:
Fragment(),
DatePickerFragment.Callbacks {
...
override fun onStop() {
...
}
override fun onDetach() {
super.onDetach()
requireActivity().revokeUriPermission(p
hotoUri,
Intent.FLAG_GRANT_WRITE_URI_PERMISS
ION)
}
override fun onActivityResult(requestCode:
Int, resultCode: Int, data: Intent?) {
when {
...
requestCode == REQUEST_PHOTO -> {
requireActivity().revokeUriPerm
ission(photoUri,
Intent.FLAG_GRANT_WRITE_URI
_PERMISSION)
updatePhotoView()
}
}
}
...
}
Снова запустите приложение CriminalIntent. Откройте экран
с подробностями преступления и
с помощью кнопки камеры
сделайте снимок. Вы должны
увидеть свое изображение на
панели эскизов (рис. 16.3).