반응형
오늘은 안드로이드 앱에서 다른 앱을 launch 시키는 방법을 정리해 보도록 하겠습니다.
1. Query Manifest 적용
Android11(API30)이 발표된 이래로,
앱내에서 다른 앱을 실행하는 경우 Manifest에서,
다른 앱에 대한 패키지 명을 명시해 주어야만 합니다.
예전에는 없었던 작업이므로, 간혹 오래된 앱들은 이것이 선언되지 않아서,
기능이 작동하지 않을 수 있습니다.
혹시 잘 되던 기능이 않되고 있다면 이 부분을 체크해 주어야 합니다.
manifest 에 선언하는 것이므로, Enum 클래스를 사용할 수 없습니다.
하드코딩해야 하므로, 테스트를 반드시 해 주어야 합니다.
<manifest ...>
...
<queries>
<package android:name="대상앱의 패키지명" />
</queries>
<application ...>
...
</application>
</manifest>
2. 다른 앱을 launch 하는 방법
이제 준비가 되었으니 코드에서 다른 앱을 실행시켜야 하는데요.
이 때는 getLaunchIntentForPackage() API를 이용해 주면 됩니다.
만약 getLaunchIntentForPackage의 결과 null 이 나오면,
아래와 같이 playstore링크를 넣어서 Activity를 launch 해서,
설치를 할 수 있도록 도와줍니다.
var intent = context.packageManager.getLaunchIntentForPackage(packageName)
if(intent == null) {
val link = "https://play.google.com/store/apps/details?id=" + packageName
intent = Intent(Intent.ACTION_VIEW).apply {
data = Uri.parse(link)
}
context.startActivity(intent)
return
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(intent)
위의 코드에서 getLaunchIntentForPackage를 실행시켯는데,
intent 가 null이 나오는 경우는 다음 2가지 중 하나입니다.
- 위의 1번에서 다룬 query가 선언되지 않은 경우
- 앱이 기기내에 설치되지 않은 경우
첫번째 경우의 수도 많으므로, 반드시 manifest에 선언이 잘 되었는지 확인해 보아야 합니다.
728x90
'Android 개발 > Android' 카테고리의 다른 글
Vibrator 로 구현하는 안드로이드 진동 (0) | 2023.05.23 |
---|---|
SharedPreference 로 간단한 데이터 저장하기 # Android (2) | 2023.04.27 |
함수안에 함수 넣기 # Closure Local functions Kotlin (0) | 2023.04.15 |
RemoteConfig 이용해서 다이나믹하게 앱 업데이트 하기 # Android (1) | 2023.03.23 |
Target Api 31 ( Android12 ) 에서 적용해야 하는 사항들 # Location Intent Filters exported mutability (0) | 2022.12.01 |
Contentprovider 와 ContentResolver 이용한 CRUD # Mime-type Uri (1) | 2022.11.18 |
Android 리소스 정리시 사용하는 Naming Convention (0) | 2022.11.12 |
Android 에서 동적 권한 얻기 # State registerForActivityResult Runtime Permission (0) | 2022.10.24 |
카카오톡이나 페이스북에서 사용하는 HashKey 얻어오기 #Android (0) | 2021.05.07 |
registerForActivityResult 구현방법 정리 # 예전 onActivityResult (0) | 2021.04.01 |
댓글