KOTLIN

코틀린(Kotlin) 권한허용

사과씨앗 2021. 1. 17. 21:25
728x90
반응형

안녕하세요 이번 글에서는 애플리케이션을 사용하기 위해 권한을 허용하는 것을 알아보겠습니다.

 

카메라 권한에 대해서 허용하는 것을 해보겠습니다.

 

먼저 AndroidManifest.xml에서 <uses-permission> 태그를 이용하여 사용할 권한을 추가하겠습니다.

 

   <!--카메라 권한 -->
    <uses-permission android:name="android.permission.CAMERA"/>

위처럼 <uses-permission> 태그를 이용하여 사용할 권한을 추가하여 줍시다.

 

다음 activity_main.xml에서 간단하게 버튼 하나를 만들어 주겠습니다.

 

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="카메라"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView"
        app:layout_constraintVertical_bias="0.176" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="위험 권한"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

 

이제 MainActivity로 이동하여 코드를 작성하겠습니다.

 

package com.example.authpractice

import android.content.pm.PackageManager
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import kotlinx.android.synthetic.main.activity_main.*
import java.util.jar.Manifest

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        button.setOnClickListener {
            checkPermission()
        }
    }

    fun checkPermission(){
        //카메라 권한의 승인 상태 가져오기
        val cameraPermission = ContextCompat.checkSelfPermission(this,android.Manifest.permission.CAMERA)

        if(cameraPermission == PackageManager.PERMISSION_GRANTED){
            //상태가 승인일 경우에는 코드 진행
            startProcess()
        }else{
            //승인되지 않았다면 권한 요청 프로세스 진행
            requestPermission()
        }
    }

    private fun requestPermission() {
        //ActivityCompat.requestPermissions을 사용하면 사용자에게 권한을 요청하는 팝업을 보여줍니다.
        //사용자가 선택한 값은 onRequestPermissionsResult메서드를 통해서 전달되어 집니다.
        ActivityCompat.requestPermissions(this, arrayOf(android.Manifest.permission.CAMERA),99)
    }
    
    private fun startProcess() {
        Toast.makeText(this,"카메라를 싱행 합니다." ,Toast.LENGTH_SHORT).show()
    }

    
    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
        when(requestCode){
            99 -> {
                if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
                    startProcess()
                }else{
                    finish()
                }
            }
        }


    }
}

 

이제 앱을 실행시켜 보겠습니다.

 

 

 

 

감사합니다.

 

 

 

728x90
반응형