일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 파이썬강의
- 자바시작하기
- 경사하강법
- java
- C언어
- 자바
- supervised learning
- 머신러닝 강좌
- 비지도학습
- 딥러닝공부
- 지도학습
- unsupervised learning
- 딥러닝
- 선형회귀
- 비용함수
- 머신러닝 강의
- c언어 오목
- 효묘블로그
- JAVA강좌
- 머신러닝
- Python강의
- feature scaling
- acmicpc.net
- 인공지능
- 자바강좌
- python강좌
- 머신러닝공부
- 백준 알고리즘
- Gradient Descent
- 파이썬강좌
Archives
- Today
- Total
컴공과컴맹효묘의블로그
Android- Permisson 본문
반응형
permission 설정 방법
<permision android:name="com.example.permission.MY_PERMISSION"
android:label="My Permission"
android:description="@string/permission_desc"
android:protectionLevel="dangerous" />
보호하려는 컴포넌트에 android:permission
삽입.
<activity ... android.permission="..."
...
protectionLevel의 값
- normal: 낮은 수준의 보호.
- dangerous: 높은 수준의 보호. 사용자에게 권한 요청 필요.
- signature: 같은 키로 인증한 앱만 실행.
- signatureOrSysyem: signature 혹은 안드로이드 시스템앱만 실행.
use-permission
AndroidManifest.xml 파일 manifest태그 바로 밑에 작성한다.
<use-permission android:name="android.permission.CAMERA" />
<use-permission android:name="android.permission.ACCES_FINE_LOCATION />
- ACCESS_FINE_LOCATION: 위치 정보 접근
- ACCESS_NETWORK_STATE: 네트워크 정보 접근
- ACCESS_WIFI_STATE: 와이파이 네트워크 정보 접근
- BATTERY_STATUS: 배터리 정보 접근
- BLUTOOTH: 블루트스 장치에 연결
- BLUTOOTH_ADMIN: 블루투스 장치를 검색하고 페어링
- CAMERA: 카메라 장치 접근
- INTERNET: 인터넷 연결
- READ_EXTERNAL_STORAGE: 외부 저장소에서 파일 읽기
- WRITE_EXTERNAL_STORAGE: 외부 저장소에서 파일 쓰기
- READ_PHONE_STATE: 전화기 정보 접근
- SEND_SMS: 문자 메시지 발신
- RECEIVE_SMS: 문자 메시지 수신
- RECEIVE_BOOT_COMPLETED: 부팅 완료시 실행
- VIBRATE: 진동 울리기
check permission
퍼미션 허용 확인 함수
open static fun checkSelfPermission(
@NonNull context: Context,
@NonNull permission: String
): Int
반환 값은
- PackageManager.PERMISSION_GRANTED
- PackageManager.PERMISSION_DENIED
중 하나로 반환한다.
val status = ContextCompat.checkSelfPermission(this, "android.permission.ACCESS_FINE_LOCATION")
if (status == PackageManager.PERMISSION_GRANTED) {
TODO() // Permission granted!
} else {
TODO() // Permission denied
}
ContextCompat
은 resource에서 값을 가져오거나 permission을 확인할 때 sdk버전을 내부적으로 처리해둔 클래스이다.
request permission- 퍼미션 요청
ActivityResultLauncher
를 이용한다. 이 클래스는 퍼미션 요청이나 다른 액티비티를 실행하고 결과를 돌려 받을 때 등등 사용된다.
위 객체는 registerForActivityResult()
함수를 호출해서 만든다.
registerForActivityResult()
함수
public final <I, O> ActivityResultLauncher<I> registerForActivityResult(
@NonNull ActivityResultContract<I, O> contract,
@NonNull ActivityResultCallback<O> callback)
첫 번째 매개변수는 어떤 요청인지를 나타내는 ActivityResultContract
타입 객체이며 다양한 요청에 대응하는 서브 클래스들이 있다. 예를 들어 퍼미션 요청에는 RequestPermission
, 다른 액티비티를 실행하고 결과를 돌려받을 때는 StartActivityForResult
가 있다.
두 번째 매개변수는 결과를 받았을 때 실행하는 callback함수.
val requestPermissionLauncher = registerForActivityResult(
ActivityResultContracts.RequestPermission()
) {
if(it) {
Log.d("callback", "granted!")
} else {
Log.d("callback", "denied.")
}
}
requestPermissionLauncer.launch("android.permission.ACCESS_FINE_LOCATION")
반응형
'컴퓨터 > Android Studio' 카테고리의 다른 글
Android- 액션바ActionBar와 툴바Toobar (0) | 2022.03.03 |
---|---|
Android- 플랫폼API, 제트팩 라이브러리 (0) | 2022.03.03 |
Android- platfrom architecture (0) | 2022.03.03 |
Android- viewBinding (0) | 2022.03.02 |
Kotlin (0) | 2022.03.01 |
Comments