안드로이드 13 업데이트 알아보기

Kenneths
Kenneth Android
Published in
7 min readAug 17, 2022
Photo by Adrien on Unsplash

안드로이드 13 정식 출시

2022년 8월 15일부로 안드로이드 13이 새로운 버전으로 배포되었습니다.
여러 기능들 중 몇가지 기능들과 사용방법을 알아보도록 하겠습니다.

개발자 생산성 도구

테마 앱 아이콘

안드로이드 13에서 옵트인된 테마 앱 아이콘

Android 13부터 Material You의 동적 색상을 앱 아이콘으로 확장하여 사용자가 테마 앱 아이콘을 선택할 수 있도록 지원합니다. 이 기능을 사용하면 지원되는 Android 런처의 앱 아이콘이 사용자가 선택한 배경 화면 및 기타 테마의 색상을 상속하도록 착색됩니다.

이 기능이 정상적으로 동작하기 위해서는 Adaptive Icon과 단색 앱 아이콘을 모두 제공하고 AndroidManifest에서 <adaptive-icon>요소에서 단색 아이콘을 지정해야 합니다.

사용자가 테마 앱 아이콘 활성과 런처가 기능을 지원하는 조건에 만족할 때, 배경 화면 및 테마의 색상을 이용하여 결정된 색조 색상을 앱 아이콘에 적용합니다.

다음은 테마 아이콘이 적용되지 않는 경우입니다.

  • 사용자가 테마 앱 아이콘을 활성화하지 않은 경우
  • 앱에서 단색 앱 아이콘을 제공하지 않는 경우
  • 런처가 테마 앱 아이콘을 지원하지 않는 경우

클립보드 미리보기

클립보드에 새로운 컨텐츠가 들어갈때의 새로운 UI모습

Android 13부터 시스템은 콘텐츠가 클립보드에 추가될 때 시각적으로 확인가능한 UI를 표시합니다.

  • 콘텐츠가 성공적으로 복사되었는지 확인합니다.
  • 복사한 콘텐츠의 미리보기를 제공합니다.
💡 앱이 Android 13의 새로운 클립보드 미리보기에서 비밀번호나 신용 카드 정보와 같은 민감한 데이터를 숨기는지 확인하세요

앱별 언어 기본 설정

시스템 설정의 앱별 언어

대부분의 경우 다국어 사용자는 시스템 언어를 영어와 같은 한 언어로 설정하고 특정 앱에는 더 적합한 언어를 선택하고 싶어합니다.

사용자에게 더 나은 환경을 제공하기 위해 Android 13에서 시스템언어와는 다른 언어로 다국어 사용자를 쉽게 지원합니다. 안드로이드에서 Opt-In 된 “앱 언어(App language)” 설정 패널을 제공하고 LocaleManager를 이용하여 런타임에 사용자가 선호하는 Locale을 가져오거나 설정할 수 있습니다.

이로써 다국어 지원을 위해 보일러 플레이트 코드를 줄이고 호환성을 개선하는 데 도움이 됩니다.

2가지의 구현방식은 다음과 같습니다.

시스템설정
res/xml/locale_config.xml 파일에 지원할 언어를 선택합니다.

<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
<locale android:name="en"/>
<locale android:name="en-GB"/>
<locale android:name="fr"/>
<locale android:name="ja"/>
<locale android:name="zh-Hans-MO"/>
<locale android:name="zh-Hant-MO"/>
</locale-config>

AndroidManifest.xml 에 locale_config 파일을 지정합니다

<application
android:localeConfig="@xml/locale_config"
</application>

추가 API
LocaleManager의 setApplicationLocales()getApplicationLocales() 메서드와 같은 이러한 공개 API를 사용하면 앱이 런타임에 시스템 언어와 다른 언어를 설정할 수 있습니다.

💡 Android 버전과의 역호환성을 위해 Appcompat 1.6.0-beta01 이상을 사용을 권장

개인 정보 보호 및 보안

Photo Picker API

공유하기 위해 직관적인 UI가 특징이다

Android 13(API 수준 33)에 새로운 Photo Picker API 가 제공됩니다.
Photo Picker API는 런타임 권한 없이 표준화된 내장 UI를 사용하여 사용자 환경의 일관성을 제공하는 API입니다.

해당 API는 Google Play 시스템 업데이트를 받는 Android 11 이상을 실행하는 기기(Go 기기 제외)에서 Photo PIcker API를 사용할 수 있습니다.

Android 13 이상을 실행하는 기기에서는 커스텀 Photo Picker 실행환경을 사용할 수 있습니다.

💡 안드로이드에서 Photo Picker API를 사용하길 권장하고 있습니다.

구현 예시

val pickMedia = registerForActivityResult(PickVisualMedia()) 
{ uri ->
if (uri != null) {
Log.d("PhotoPicker", "Selected URI: $uri")
} else {
Log.d("PhotoPicker", "No media selected")
}
}

registerForActivityResult의 인자로 PickVisualMedia 를 생성해서 할당한다

pickMedia.launch(PickVisualMediaRequest(
PickVisualMedia.ImageAndVideo))
pickMedia.launch(PickVisualMediaRequest(PickVisualMedia.ImageOnly)) pickMedia.launch(PickVisualMediaRequest(PickVisualMedia.VideoOnly))
val mimeType = "image/gif" pickMedia.launch(
PickVisualMediaRequest(PickVisualMedia.SingleMimeType(mimeType))

생성된 launcher 클래스를 이용해 PickVisualMedia 클래스의 Media Type의 지정과 함께 launch 실행한다

💡 해당 API를 사용하기 위해서는 activity-ktx:1.6.0-alpha05 이상을 사용해야 함

알림권한

Android 13에서 알림 권한 다이얼로그

사용자가 가장 중요한 알림에 집중할 수 있도록 Android 13에는 새로운 알림 런타임 권한이 도입되었습니다. 앱은 이제 알림을 게시하기 전에 사용자에게 알림 권한을 요청해야 합니다. Android 12 이하를 대상으로 하는 앱의 경우 시스템에서 사용자를 대신하여 업그레이드 흐름을 처리합니다.

<manifest ...> 
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<application ...>
</application>
</manifest>

13부터 POST_NOTIFICATIONS 퍼미션 선언과 이를 허용하기 위한 방법으로 사용자들이 익숙해졌다 생각되는 시점인 3,4번째 실행시 알림 권한 허용을 자연스럽게 유도하는 것을 권장하고 있습니다.

알림권한 요청 사용자 기반 워크플로우 권장사항

해당 권한 Flow에 대한 내용은 여기에서 자세히 볼 수 있습니다.

--

--

Kenneths
Kenneth Android

사용자들에게 편리하고 AweSome UI, UX를 경험해주고 싶은 상위 티어 개발자가 되고싶어 달려가고있는 개발자입니다. 다양한 내용들을 공유하려고 합니다.