티스토리 뷰
728x90
권한
• 애플리케이션이 안드로이드의 특정 기능을 사용하려면 허락을 받아야 한다.
1. 일반 권한
• manifest에 등록만 하면 사용자에게 따로 물어보지 않아도 기능을 사용할 수 있다.
2. 위험 권한
• 사용자에게 직접 권한을 요청한다.
• 주로 개인 정보에 관련된 권한은 위험 권한이 많다.
* API 버전에 따라 권한의 등급이 다르다.
• AndroidManifest.xml
- <uses-permission> 태그로 권한을 받는다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.fastcampus">
<uses-permission android:name="android.permission.CAMERA" />
<application>
...생략...
</application>
</manifest>
• activity_permission27.xml
- 권한을 요청할 버튼 생성
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat 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=".Permission_27">
<TextView
android:id="@+id/askPermission"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="#99DDFF"
android:gravity="center"
android:text="권한 요청"
android:textSize="40dp" />
</androidx.appcompat.widget.LinearLayoutCompat>
• Permission_27.kt
package com.example.fastcampus
import android.content.pm.PackageManager
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.TextView
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
class Permission_27 : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_permission27)
findViewById<TextView>(R.id.askPermission).setOnClickListener {
val hasCameraPermission = ContextCompat.checkSelfPermission( // 카메라 권한이 있는지 확인
this,
android.Manifest.permission.CAMERA
)
if (hasCameraPermission != PackageManager.PERMISSION_GRANTED) { // 권한이 없는 경우
// 권한 요청(이유도 함께 설명하면 좋다.)
ActivityCompat.requestPermissions(
this,
arrayOf(android.Manifest.permission.CAMERA),
1000
)
} else { // 권한이 있는 경우
// 카메라 기능 실행
Log.d("testt", "카메라 권한 있음")
}
}
}
override fun onRequestPermissionsResult( // 권한 요청의 결과를 받는다.
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if(requestCode == 1000) { // 우리가 요청했던 카메라 권한에 대한 결과가 왔다면
if(grantResults[0] == PackageManager.PERMISSION_GRANTED) { // 권한 요청이 승인되면
Log.d("testt", "카메라 권한 승인")
} else { // 권한 요청이 거부되면
// 권한이 필요한 이유를 설명하거나 다시 요청을 하는 것이 좋음.
Log.d("testt", "카메라 권한 거부")
}
}
}
}
이 글은
패스트 캠퍼스 Android 앱 개발의 정석 with Kotlin 올인원 패키지 Online
강의를 듣고 공부한 내용을 바탕으로 작성되었습니다.
728x90
'📱 Android > 💡 개념' 카테고리의 다른 글
[Android/개념] 23. Network (0) | 2022.11.11 |
---|---|
[Android/개념] 22. Room (0) | 2022.11.10 |
[Android/개념] 21. SharedPreferences (0) | 2022.11.10 |
[Android/개념] 20. Database(데이터베이스) (0) | 2022.11.09 |
[Android/개념] 19. ViewPager & TabLayout (0) | 2022.11.09 |
댓글
공지사항