Shortcut을 만들고 나서, 앱이 업데이트 되는 동안 만들었던 Shortcut들을 관리해줘야 하는 경우가 생길 수 있다. 한 가지 경우를 예로 들면, 앱이 업데이트 되면서 더 이상 제공하지 않는 기능이 pinned shortcut으로 있다면 이를 비활성화 시킬 수 있다. 이번 포스팅을 통해 Shortcut을 관리하는 방법과 Shortcut에 대한 잡다한 정보들에 대해 정리해본다.
Shortcut 동작
LauncherApps 클래스의 API를 통해 런처 앱은 shortcut들에 접근할 수 있다.
Pinned Shortcuts는 런처 자체에 보이기 때문에 항상 표시되는데 다음과 같은 경우에만 런처에서 제거된다.
- 사용자가 제거
- Shortcut과 연결된 앱이 제거
- App Data를 지울 경우
Shortcut이 보이는 순서
Static Shortcut이 먼저 보이고 그 다음에 Dynamic Shortcuts가 보인다. 각 Shortcut 타입 내에서는 ShortcutInfo.getRank()에 따라 오름차순으로 정렬된다. updateShortcuts(), addDynamicShortcuts(), setDynamicShortcuts()를 호출할 때 기존 정렬 순위도 업데이트 할 수 있다.
Shortcut 개수 제한
shortcut은 5개까지 보일 수 있으며 런처에 따라 4개까지만 보이기도 한다.
앞의 포스팅들에서 만들었던 프로젝트를 보면 기존에 두 개의 shortcut이 있는 것을 확인할 수 있다. 여기에 여러 개의 shortcut을 추가해보자.
이렇게 한 번에 지원되는 개수 이상의 shortcut들을 추가하면 런타임에 exception이 발생한다.
한번에 하나의 Shortcut을 추가하더라도 현재 추가되어 있는 Shortcut의 개수가 max 값을 초과하면 동일한 에러가 발생한다. 개수도 함께 관리해주어야 한다.
여러 Intent와 Activity 관리
Shortcut이 실행될 때, 앱이 여러 작업을 수행해야 한다면 activity가 연속적으로 실행되도록 할 수 있다. Shortcut을 만들 때 여러 Intent를 명시해주거나 Intent flag들을 설정해주면 된다.
여러 Intent 할당
ShortcutInfo.Builder를 이용하여 Shortcut을 만들 때 setIntent() 대신에 setIntents()를 사용하여 만들 수 있다. 이렇게 만들면 Shortcut 실행시 목록의 마지막 Activity가 보이며 나머지는 stack에 쌓여있다. 이 방법을 통해 사용자가 뒤로가기를 누르면 다른 Activity를 볼 수 있도록 할 수 있다.
Intent Flags 설정
Dynamic Shortcuts는 Intent Flag들을 지정해줄 수 있다. 다른 Flag들과 함께 Intent.FLAG_ACTIVITY_CLEAR_TASK를 지정해줌으로써 앱이 실행되는 중에 Shortcut을 통해 다른 작업이 시작될 때 정상적으로 동작하도록 해줄 수 있다. 이 부분과 관련해서 더 자세히 알아보려면 구글 문서(https://developer.android.com/guide/components/activities/tasks-and-back-stack)를 참고 바란다.
Shortcut 사용 추적
reportShortcutUsed(shortcutId) 메소드를 이용하여 Shortcut 사용자가 앱 내에서 특정 작업을 완료한 시기를 추적할 수 있다. 사용자가 해당 Shortcut을 선택한 경우나 앱 내에서 바로가기에 해당하는 작업을 수동으로 완료한 경우를 추적해준다.
Shortcuts 비활성화
Shortcut이 더 이상 지원되지 않는 Shortcut일 경우, disableShortcuts()를 이용하여 사용자가 더 이상 사용할 수 없도록 Shortcuts를 비활성화시킬 수 있다. 이렇게 하면 Static Shortcuts과 Dynamic Shortcuts는 제거되고 Pinned Shortcut은 비활성화된다.
ShortcutManager Reference
https://developer.android.com/reference/android/content/pm/ShortcutManager
Shortcut 시리즈
2020/08/30 - [Android/Android Development] - Android App Shortcuts (안드로이드 앱 숏컷) - 1. 기본 개념
2020/08/30 - [Android/Android Development] - Android App Shortcuts (안드로이드 앱 숏컷) - 2. 만들기
2020/08/31 - [Android/Android Development] - Android Shortcuts (안드로이드 앱 숏컷) - 3. 관리하기
'Android > Android Development' 카테고리의 다른 글
Android Custom Lint Checks (1427) | 2021.08.22 |
---|---|
Google I/O '21 (1785) | 2021.06.20 |
Android App Shortcuts (안드로이드 앱 숏컷) - 2. 만들기 (4) | 2020.08.31 |
Android App Shortcuts (안드로이드 앱 숏컷) - 1. 기본 개념 (2) | 2020.08.31 |
Android Room - RxKotlin과 함께 쓰는 방법 (6) | 2020.06.10 |
댓글