마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

패키지네임으로 설치여부 확인 후 설치페이지이동 방법

0 추천
안녕하세요

제목처럼 'A'앱에서 'B'앱의 설치 여부를 확인하여

미설치시 google play 설치페이지로 이동까지 하는 부분을 적용하고 싶은데

쉽지가 않네요

앱에서 처리하는 방식(팝업?)과

웹뷰일 경우 웹뷰에서 처리하는 방식 두가지 모두 알고싶습니다.

 

안드로이드 개발자도 아니고 개발경험도 없다보니... 뭐라고 검색해야할지도 모르겠고

막막해서 문의 드립니다.
초코홀릭 (200 포인트) 님이 2022년 5월 23일 질문

1개의 답변

0 추천
 
채택된 답변

Android package manager를 이용하세요.

https://developer.android.com/reference/android/content/pm/PackageManager

코틀린으로 해당 앱이 설치되었는지  체크하는 간단한 코드입니다. 첫번째 인자는 application id입니다.

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

 

 아래은 해당 앱의 플레이스토어 페이지를 여는 코드입니다.

fun openPlayStore(appId: String) {
   try {
       openPlayStoreApp(appId)
   } catch (e: ActivityNotFoundException) {
       openPlayStoreWebPage(appId)
    }
}

fun openPlayStoreApp(appId: String) {
   startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=$appId")))
}

fun openPlayStoreWebPage(appId: String) {
   startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=$appId")))
}

액티비티에서 아래처럼 사용하면 됩니다.

val appId = "찾으려는 앱의 패키지이름"

if (!isAppInstalled(appId)) {
   openPlayStore(appId)
   return
}

 

 

spark (227,510 포인트) 님이 2022년 5월 23일 답변
초코홀릭님이 2022년 5월 23일 채택됨
답변 감사합니다. 덕분에 좀 진행이 됐네요.
한가지만 더 여쭤봐도 될까요?
패키지를 검색했을때 있으면 마켓으로 연결이 아니고
바로 실행을 시키고 싶을 경우에는 어떤식으로 사용할수 있을까요?
openPlayStore() 대신에 openPlayStoreWebPage() 호출하세요.
자답:
val (인텐트 명) = packageManager.getLaunchIntentForPackage("(패키지명)")
startActivity((인텐트명))

이걸로 해결했습니다
아 질문을 잘못 이해했네요. 네, 말씀하신 방법이 맞는 것 같네요.
...