728x90
안드로이드는 개인 정보, 센서, 카메라, 저장소 등 개인 정보와 관련된 기능을 사용하기 위해서는 권한을 등록해야 한다.
권한 등록은 사용자가 애플리케이션을 다운로드 받거나 설치 후 애플리케이션 정보에서 확인이 가능하다.
권한 등록의 목적은 사용자에게 애플리케이션이 어떠한 기능을 사용하는지 알려주는 목적으로 사용한다.
권한 등록을 필요로 하는 기능을 사용할 때 권한을 등록하지 않으면 오류가 발생하여 개발자는 반드시 권한을 등록해야 하고 등록된 권한은 사용자에게 고지된다.
안드로이드 6.0 (마시멜로우) 버전 부터 개인 정보와 관련된 권한은 애플리케이션 내부에서 고지하고 사용 허가를 받아야 한다.
권한 사용시 반드시 사용자에게 고지하고 이를 승인 받는 작업이 필요하다.
사용 허가를 받을 필요 없는 권한은 사용 허가를 받은 상태로 처리된다.
AndroidManifast.xml 파일에 권한 작성해주면 된다.
package com.example.permission
import android.Manifest
import android.content.pm.PackageManager
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
val permission_list = arrayOf(
Manifest.permission.INTERNET,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.READ_CONTACTS,
Manifest.permission.WRITE_CONTACTS,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
textView.text = ""
for (permission in permission_list) {
val chk = checkCallingOrSelfPermission(permission)
if (chk == PackageManager.PERMISSION_GRANTED) {
textView.append("$permission : 허용 \n")
} else if (chk == PackageManager.PERMISSION_DENIED){
textView.append("$permission : 거부 \n")
}
}
button.setOnClickListener {
requestPermissions(permission_list, 0)
}
}
// 퍼미션 변경시 자동 실행
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
textView.text=""
for (idx in grantResults.indices) {
if (grantResults[idx] == PackageManager.PERMISSION_GRANTED) {
textView.append("${permissions[idx]} : 허용\n")
}
else if (grantResults[idx] == PackageManager.PERMISSION_DENIED) {
textView.append("${permissions[idx]} : 거부\n")
}
}
}
}
728x90
'안드로이드 > 권한' 카테고리의 다른 글
안드로이드 권한 다시 뭍지 않음 일때 (0) | 2024.03.22 |
---|---|
TedPermission 보일러 플레이트 코드 (0) | 2023.03.28 |
ActivityResultContracts 를 이용한 권한 체크 (0) | 2022.10.03 |