권한 설정 하기
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
when {
checkSelfPermission(
Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) -> {
// 정상적 수행
}
//사용자가 명시적으로 권한을 거부한 경우 -> true
shouldShowRequestPermissionRationale(Manifest.permission.READ_EXTERNAL_STORAGE) -> {
showReasonForPermission()
}
//사용자가 권한요청을 처음 보거나, 다시 묻지 않음, 권한요청을 허용한 경우 -> false
// requestPermissionLauncher는 수 회 이상 권한을 거부했을 경우 launch 되지 않음
else -> {
requestPermissionLauncher.launch(Manifest.permission.READ_EXTERNAL_STORAGE)
}
}
when {
// 권한이 있을 때
ContextCompat.checkSelfPermission(requireActivity(), Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED -> {
getPhoto()
}
//사용자가 명시적으로 권한을 거부한 경우 -> true
shouldShowRequestPermissionRationale(Manifest.permission.READ_EXTERNAL_STORAGE) -> {
showReasonForPermission()
}
//사용자가 권한요청을 처음 보거나, 다시 묻지 않음, 권한요청을 허용한 경우 -> false
// requestPermissionLauncher는 수 회 이상 권한을 거부했을 경우 launch 되지 않음
// ActivityResultLauncher는 onCreate(), onAttach() 등 fragment 생성 시에 초기화
else -> {
requestPermissionLauncher.launch(Manifest.permission.READ_EXTERNAL_STORAGE)
}
}
val intent = Intent(
Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
Uri.parse("package:${requireActivity().packageName}")
).apply {
this.addCategory(Intent.CATEGORY_DEFAULT)
this.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
}
startActivity(intent)