ANDROID 권한처리
신규 프로젝트를 추가후 아래와 같은 AndroidMainfest.xml 연 후에 사용할 권한을 입력한다. 이번에는 카메라다!!
디자인 모드에 들어가 아래와 같이 위젯을 꾸며준다.
************************아래 코드를 참고해서 코딩해준다*******************************************
package com.monosoft.myapplication
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import android.Manifest
import android.content.pm.PackageManager
import android.widget.Toast
import androidx.core.app.ActivityCompat
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//
btnCamera.setOnClickListener() {
checkCameraPermission()
}
}
//첫번째 실행 함수
fun checkCameraPermission() {
//카메라가 사용하는 퍼미션을 변수로 정의
val cameraPermission = ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
//승인이 되어있는지 확인 //만약 승인되지 않을때
if (cameraPermission == PackageManager.PERMISSION_DENIED) {
//카메라 권한이 승인 시 실행
startProcess()
} else {
requestPermission()
}
}
//카메라 허용 시 실행 함수
fun startProcess() {
//카메라 권한이 실행 시 다음 코드 실행
Toast.makeText(this,"카메라 사용 권한이 승인되었습니다",Toast.LENGTH_LONG).show()
}
//카메라 비 허용 시 실행 함수
val FLAG_CAMERA = 99
fun requestPermission() {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.CAMERA),FLAG_CAMERA)
}
//requestPermission 실행 시 액티비티 가지고 있는 아래 함수를 호출해준다.
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
when(requestCode) {
FLAG_CAMERA -> { //카메라 승인 시
if(grantResults[0] == PackageManager.PERMISSION_GRANTED) {
startProcess()
} else {
finish()
}
}
}
}
}
'Kotlin > Kotlin 팁' 카테고리의 다른 글
ANDROID 코틀린 디버깅 (0) | 2020.09.23 |
---|---|
ANDROID 파일 읽고 쓰기 (0) | 2020.09.22 |
ANDROID 액티비티 조각 Fragment 다루기(2) (0) | 2020.09.21 |
ANDROID 앱 디버깅 개요 (0) | 2020.09.18 |
ANDROID 액티비티 조각 Fragment 다루기(1) (0) | 2020.09.17 |
댓글