Android - 위험 권한, 권한 전용 팝업 생성 (Kotlin)
업데이트:
- 연구주제 : Android - 위험 권한, 권한 전용 팝업 생성 (Kotlin)
- 연구목적 : 안드로이드에서의 코틀린 활용
- 연구일시 : 2020년 03월 12일 09:00~17:00
- 연구자 : 이재환 ljh951103@naver.com
- 연구장비 : HP EliteDesk 800 G4 TWR, Kotlin, Android studio, IntelliJ
- 관련연구 : Java, Android, Kotlin, Dialog, Permission
서론
안드로이드에서 앱을 사용할 떄, SDK가 마시멜로버전(APK 23)이상일 경우 특정 기능을 사용할 떄 권한을 요청한다.
이 권한 중, 위험 권한으로 분류된 권한은 개발자가 사용자에게 직접 물을 수 있도록 작성해야한다.
페이지에서 확인한 위험 권한 리스트들을 매니페스트에 작성하게 된다면, 매니페스트 작성 + 코드로 작성 까지 두 번을 작업해야한다는 의미이다.
이제 안드로이드10이 출시되는 시점이라 이 권한 작성 코드는 필수적이라고 생각한다.
본론
위험 권한, 권한 전용 팝업
private fun checkPermission() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) !== PackageManager.PERMISSION_GRANTED)
{
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE))
{
AlertDialog.Builder(this)
.setTitle("알림")
.setMessage("저장소 권한이 거부되었습니다. 사용을 원하시면 설정에서 해당 권한을 직접 허용하셔야 합니다.")
.setNeutralButton("설정", object: DialogInterface.OnClickListener {
override fun onClick(dialogInterface:DialogInterface, i:Int) {
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
intent.setData(Uri.parse("package:" + getPackageName()))
startActivity(intent)
}
})
.setPositiveButton("확인", object:DialogInterface.OnClickListener {
override fun onClick(dialogInterface:DialogInterface, i:Int) {
finish()
}
})
.setCancelable(false)
.create()
.show()
}
else
{
ActivityCompat.requestPermissions(this, arrayOf<String>(Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE), MY_PERMISSION_STORAGE)
}
}
}
override fun onRequestPermissionsResult(requestCode:Int, @NonNull permissions:Array<String>, @NonNull grantResults:IntArray) {
when (requestCode) {
MY_PERMISSION_STORAGE -> for (i in grantResults.indices)
{
// grantResults[] : 허용된 권한은 0, 거부한 권한은 -1
if (grantResults[i] < 0)
{
Toast.makeText(this@MainActivity, "해당 권한을 활성화 하셔야 합니다.", Toast.LENGTH_SHORT).show()
return
}
}
}// 허용했다면 이 부분에서..
}
companion object {
private val MY_PERMISSION_STORAGE = 1111
}
결론
처음 접속했을 떄, 다음과 같은 권한 허용 알림이 나오는데 이를 거부할 경우, 권한을 해야한다는 토스트메시지가 출력된다.
그리고 앱을 종료시킨 후, 다시 실행시키면 다음과 같이 알림이 출력된다.
설정을 클릭할 경우 앱 권한 설정화면으로 이동하게 된다.
향후과제
참고자료
https://g-y-e-o-m.tistory.com/47
Writer: Jae-Hwan Lee
댓글남기기