개요

GO TO GOOGLEPLAY 버튼을 선택하면 특정 앱의 설치 화면으로이동한다. 만약 특정 앱이 이미 설치되어있다면 앱을 바로 실행한다.

이동할 테스트 대상 앱의 패키지 명은 아래와 같다.

com.hydroponicglass.interestcalculator

 

AndroidManifest.xml

이동할 앱의 패키지 명을 등록한다.

매니패스트에 등록하지 않으면 설치가 되었는지 확인이 안되어서 설치가 되었더라도 항상 구글플레이로 이동한다.

<queries>
<package android:name="com.hydroponicglass.interestcalculator"/>
</queries>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.hydroponicglass.gotoplaystore">

    <application
    ...
    </application>
    <queries>
        <package android:name="com.hydroponicglass.interestcalculator"/>
    </queries>
</manifest>

 

activity_main.xml

버튼을 생성한다.

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Go To GooglePlay"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

 

MainActivity.kt

패키지명 등록

private const val PACKAGE_NAME = "com.hydroponicglass.interestcalculator"

 

이동할 앱이 설치가 되었는지 확인 후 설치가 되었다면 실행, 설치가 안되었다면 구글플레이로 분기하는 코드

private fun OpenAppOrGoToPlayStore() {
    if (IsInstalledApp(PACKAGE_NAME)) {
        Log.d(TAG, "[OpenAppOrGoToPlayStore] Run OpenApp")
        OpenApp(PACKAGE_NAME)
    }
    else{
        Log.d(TAG, "[OpenAppOrGoToPlayStore] Run GoToPlayStore")
        GoToPlayStore(PACKAGE_NAME)
    }
}

 

이동할 앱이 설치가 되었는지 확인하는 코드

fun IsInstalledApp(packageName: String): Boolean {
    val intent = packageManager.getLaunchIntentForPackage(packageName)
    if(intent != null){
        return true
    }
    return false
}

 

앱을 실행하는 코드

fun OpenApp(packageName: String) {
    val intent = packageManager.getLaunchIntentForPackage(packageName)
    startActivity(intent)
}

 

플레이스토어로 이동하는 코드

예외처리가 필요하다. 에뮬레이터에서 실행했더니 플레이스토어가 없어서 예외처리를 하지 않으면 에러가 발생했다.

fun GoToPlayStore(packageName: String) {
    try {
        val intent = Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=$packageName"))
        startActivity(intent)
    } catch (e: ActivityNotFoundException) {
        e.printStackTrace()
    }
}

 

전체코드

https://github.com/HydroponicGlass/2021_Example_Android/tree/main/GoToPlayStore