일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- Singleton
- 디자인패턴
- 옵저버 패턴
- Design Pattern
- ㅋㅁ
- 함수형프로그래밍
- El
- r
- material3
- ㅓ
- 추상 팩토리
- PrototypePattern
- Kotlin
- Abstract Factory
- designPattern
- compose
- F
- 코틀린
- Functional Programming
- 디자인패턴 #
- 싱글톤
- 프로토타입 패턴
- factory method
- Observer Pattern
- builderPattern
- 추상팩토리패턴
- android designsystem
- 안드로이드 디자인시스템
- 빌터패턴
- 팩토리 메소드
- Today
- Total
오늘도 더 나은 코드를 작성하였습니까?
Permission 선언해 보기. 본문
manifest파일에 선언하기
<uses-permission android:name=" 권한명" /> 매니페스트 바로 아래 단계 태그에 추가한다.
<manifest ...>
<uses-permission android:name="android.permission.CAMERA"/>
<application ...>
...
</application>
</manifest>
하드웨어 선택사항으로 선언
CAMERA와 같은 일부 권한은 앱이 일부 Android 기기만 보유하고 있는 하드웨어에 액세스하도록 허용합니다.
앱에서 이러한 하드웨어 관련 권한중 하나를 선언하는 경우, 해당하는 하드웨어가 없는 기기에서는 앱을 전혀 실행할 수 없는지 고려한다.
<uses-feature>선언에서 android:required를 false로 설정 하여 필수요구 사항이 아니도록 한다.
<manifest ...>
<application>
...
</application>
<uses-feature android:name="android.hardware.camera"
android:required="false" />
<manifest>
<uses-feature> 선언에서 android:required를 false로 설정하지 않으면 Android가 앱이 실행되려면 하드웨어가 필요하다고 가정합니다. 그러면 시스템에서 일부 기기에서 앱을 설치하지 못하게 합니다.
특정 하드웨어가 있는지 확인하려면 다음 코드 스니펫과 같이 hasSystemFeature() 메서드를 사용하여 있는지 확인하고,
하드웨어를 사용할 수 없다면 앱에서 해당 기능을 적절하게 사용 못하게 하면된다.
// Check whether your app is running on a device that has a front-facing camera.
if (applicationContext.packageManager.hasSystemFeature(
PackageManager.FEATURE_CAMERA_FRONT)) {
// Continue with the part of your app's workflow that requires a
// front-facing camera.
} else {
// Gracefully degrade your app experience.
}
API 수준별 권한 선언
- 런타임 권한을 지원하는 기기, 즉 Android 6.0(API 수준 23) 이상을 실행하는 기기에만 권한을 선언하려면 uses-permission 요소 대신 uses-permission-sdk-23 요소를 포함해야 합니다.
- android:maxSdkVersion는 해당 권한이 앱에 부여되어야 하는 최고 API 레벨입니다.
앱이 그 이상의 API 레벨을 실행하는 기기에 설치된 경우 이 앱에는 권한이 부여되지 않으며, 이에 따라 관련 기능을 사용할 수 없습니다.
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="28" />
안드로이드 10 sdk 29 이상 이면 android.permission.WRITE_EXTERNAL_STORAGE 권한은 사용할 수 없도록 바뀌었다.
그래서 sdk 28 이하 설치기기에서만 권한을 받으면 된다.