[Android/Kotlin] 패키지 명으로 외부 앱 실행 안됨 해결 / 안드로이드 11 이상 타켓 시 Manifest 추가

SoyoungLee·2023년 2월 13일
0

안드로이드/코틀린

목록 보기
58/70
post-thumbnail

[Android/Kotlin] 패키지 명으로 외부 앱 실행 안됨 해결 / 안드로이드 11 이상 타켓 시 Manifest 추가

📌 기기 설치된 패키지명 확인

먼저 기기에 설치되어있는지 확인 후 설치되어있으면 앱 실행.
안되어있으면 설치할 마켓 주소로 연결 시켜준다

    // 태블릿에 설치된 패키지 리스트
    fun getPackageList(): Boolean {
        var isExist = false
        val pkgMgr = mContext.packageManager
        val mainIntent = Intent(Intent.ACTION_MAIN, null)
        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER)

        // 설치된 모든 앱 리스트 가져오기(내장/외장)
        //val mApps: List<ApplicationInfo> = pkgMgr.getInstalledApplications(0)
        // 디바이스에 설치된 모든 패키지에 대한 PackageInfo 추출
        val mApps: List<PackageInfo> = pkgMgr.getInstalledPackages(0)

        try {
            for (i in mApps.indices) {
                Utils.Log("mApp -> ${mApps[i].packageName}")
                if (mApps[i].packageName.startsWith("패키지명")) {
                    isExist = true
                    break
                }
            }
        } catch (e: java.lang.Exception) {
            isExist = false
        }
        return isExist
    }

📌 패키지 명으로 외부 앱 실행 코드

// 설치 되어있으면 앱 연결
if (getPackageList()){

	val intent = packageManager.getLaunchIntentForPackage("패키지명")
	intent!!.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
	startActivity(intent)
    
} else {

	// 설치 안되어있으면 앱 스토어로 연결
	val url = "market://details?id=패키지명"
	val i = Intent(Intent.ACTION_VIEW, Uri.parse(url))
   	startActivity(i)
    
}

하지만 실행이 안됨 ㅠ
검색해보니 API 30 이상(안드로이드 11)을 타겟할 때 외부 앱 실행시에는 Manifest 에 queries 에 패키지를 추가 해줘야한다.

💙 AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="내패키지명"
    
    ...
    
    <!-- SDKVersion 30 이상은 외부앱 실행  권한 추가 필요-->
    <queries>
    <package android:name="실행패키지명"/>
    </queries>
    
    ...
    
    <application 
    		...
            
            				>
                            ...
    </application>
profile
Android Developer..+ iOS 슬쩍 🌱 ✏️끄적끄적,,개인 기록용 👩🏻‍💻

0개의 댓글