안드로이드에서 권한 요청 방법


확인방법

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))
    }
}


답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다