반응형
포스팅 환경
- M1 Mac OS Ventura 13.4.1
- Android Studio Giraffe | 2022.3.1 Patch 1 (ARM)
- Gradle 8.2
- Android Build Gradle 8.2.2
- Kolin 1.9.22
- Target SDK 33
SDK 32 이하 기존 코드
기존의 코드의 경우
아래의 형태로 가져올 수 있었습니다.
context.packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES)
하지만 SDK 33 이 되면서 위 처럼 가져오는 코드가 Deprecated 되었습니다..
SDK 33 이상 기존 코드
그럼 다른 방식으로는 어떻게 가져오면 될까요?
아래 공식문서를 보면 PackageManager.PackageInfoFlas.of() 함수를 이용하라고 되어있습니다.
https://developer.android.com/reference/android/content/pm/PackageManager.PackageInfoFlags#of(long)
PackageManager.PackageInfoFlags.of() 함수를 이용하고 파라미터로
PackageManager.GET_ACTIVITYES 와 같은 플래그를 전달하고 가져오면 된다고 합니다.
packageManager.getPackageInfo(packageName, PackageManager.PackageInfoFlags.of(PackageManager.GET_SIGNING_CERTIFICATES)))
다만 여기서 문제가 되는 점이 of 함수의 인자로 long 타입을 넣어줘야 하는데
Flag 변수를 넣으면 에러가 발생합니다(…)
스택오브 플로우를 뒤적여보니
Long 타입으로 변환해서 사용하면 되네요 ㅎㅎ
정리
SDK 33이 되면서 PackageInfo 정보를 가져오는 코드 방식이 변경되었습니다.
아래 처럼 사용하면 됩니다.
var packageInfo: PackageInfo = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
packageManager.getPackageInfo(packageName, PackageManager.PackageInfoFlags.of(PackageManager.GET_SIGNING_CERTIFICATES.toLong()))
} else {
packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES)
}
반응형
'Develop > Android' 카테고리의 다른 글
[Android] Gradle 7.2 이상 플러그인, 의존성, 저장소 추가 방법 (0) | 2024.02.19 |
---|---|
[Android] 기기 화면 회전에 따른 Activity, Fragment 대응 전략 (0) | 2024.02.10 |
[Android] - Gradle Dependency 최신 버전 쉽게 확인하기 (0) | 2022.10.21 |
[Android] - 코드로 기기 화면 켜지게 하기 (0) | 2022.10.18 |
[Android] - Assets 내부의 파일 접근하기 (0) | 2022.09.23 |