설치한 앱을 확인하는 방법 : PackageManager

wonseok·2022년 8월 23일
0

내 앱에서 다른 앱을 실행시키고자 할 때 그 앱이 현재 디바이스에 설치되어있는지 확인할 필요가 있다.

이럴 때에는 PackageManager를 통해서 설치 여부를 확인할 수가 있다.

패키지명 알아내기

우선 패키지명을 알아내야 한다.
https://play.google.com/store/apps

구글 플레이에 접속해서 당근마켓 앱을 검색했다고 가정해보자.

그럼 그림에서 볼 수 있듯이
com.towneers.www가 바로 당근마켓 앱의 패키지 주소이다.

예제 1

@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val towneersPackageName: String = "com.towneers.www"

        if(isAppInstalled(towneersPackageName, packageManager)){
            // 당근마켓이 설치되어있음!
        }else{
            // 당근마켓이 설치되어있지 않음!
        }
    }

    private fun isAppInstalled(packageName: String, packageManager: PackageManager): Boolean {
        return try {
            packageManager.getPackageInfo(packageName, 0)
            true
        } catch (e : PackageManager.NameNotFoundException) {
            false
        }
    }
}

참고로 여기 예제에서는 getPackageInfo 함수의 flag 값이 0으로 설정되어있는데,
MATCH_UNINSTALLED_PACKAGES 같은 플래그값을 설정하여 설치되지 않은 상태에 있는 패키지 정보도 가져올 수 있다.
https://developer.android.com/reference/android/content/pm/PackageManager

예제 2

val towneersPackageName: String = "com.towneers.www"
val activityIntent = packageManager?.getLaunchIntentForPackage(towneersPackageName)?.let {
            PendingIntent.getActivity(
                this,
                0,
                it,
                PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
            )
        }

다음은 getLaunchIntentForPackage 함수를 통해 해당 당근마켓 앱을 intent에 담아준 후 PendingIntent로 변환해주는 예제이다.

0개의 댓글