확인방법
ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
거부한 적인 있는 권한의 경우
if(ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.ACCESS_FINE_LOCATION)){
//이전에 거부한 경우 권한 필요성 설명 및 권한 요청
}else{
//처음 요청하는 경우 그냥 권한 요청
}
onRequestPermissionResult deprecated
private val permissionList = Manifest.permission.ACCESS_FINE_LOCATION
private val requestPermission = registerForActivityResult(
ActivityResultContracts.RequestPermission()) {
when(it) {
true -> { Toast.makeText(this,"권한 허가",Toast.LENGTH_SHORT).show()}
false -> {
Toast.makeText(this,"권한 거부",Toast.LENGTH_SHORT).show()
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val request_btn = findViewById<Button>(R.id.request_permission_btn)
request_btn.setOnClickListener {
requestPermission.launch(permissionList)
}
}
// 여러 권한 한번에
private val requestPermission = registerForActivityResult(
ActivityResultContracts.RequestMultiplePermissions()) {
for(entry in it.entries) {
Toast.makeText(
this,
"${entry.key} = ${entry.value}",
Toast.LENGTH_SHORT
).show()
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val request_btn = findViewById<Button>(R.id.request_permission_btn)
request_btn.setOnClickListener {
requestPermission.launch(arrayOf(
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION))
}
}