Development/Android

Android에서 설치된 특정 패키지 검색하기

Jamie 2022. 1. 12. 15:14
반응형

안녕하세요.

이번 포스팅은 안드로이드 개발중에 내 앱이 아닌 설치된 다른 앱의 존재여부를 검사하는 작업을 할때 사용하는 유틸클래스를 소개하고자 합니다.

 

많은곳에서 사용할 수 있으므로 공용 클래스로 작성하여 사용하면 됩니다.

사용하기전에 AndroidManifest.xml에 다음과 같이 작성해주셔야 됩니다.

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.your.packagename">

	<queries>
        <package android:name="com.other.packagename"/>
    </queries>

    <application
    // 생략..............................
    </application>

</manifest>

<queries></queries> 태그안에 대상 패키지명을 적어주시면 됩니다.

 

package com.sep12.torqueds.utils

import android.content.Context
import android.content.pm.PackageManager
import android.util.Log
import com.your.packagename.BuildConfig
import java.lang.Exception

class PackageUtils(val context: Context) {

    companion object {
        private const val TAG = "PackageUtils"
    }

    fun isPackageInstalled(packageName: String, packageManager: PackageManager): Boolean {
        return try {
            packageManager.getPackageInfo(packageName, 0)
            true
        } catch (e: PackageManager.NameNotFoundException) {
            if (BuildConfig.DEBUG) {
                Log.e(TAG, "isPackageInstalled: PackageManager.NameNotFoundException")
            }
            false
        }
    }
}

구현은 다음과 같이 되어 있습니다. 첫번째 파라미터에 검색할 패키지 이름(String)을 넣어주고, PackgeManager를 넣어줍니다.

 

사용하는 방법은 다음과 같습니다.

 fun checkPackgeName(context: Context): Boolean {
    val packageManager = context.packageManager
    PackageUtils(context).let { utils ->
        if (utils.isPackageInstalled("com.other.packgename", packageManager)) {
            Log.d(TAG, "checkPackgeName: return true")
            return true
        }
    }
    Log.w(TAG, "checkPackgeName: return false")
    return false
}

감사합니다.

 

참고한 사이트

* https://stackoverflow.com/questions/62345805/namenotfoundexception-when-calling-getpackageinfo-on-android-11

 

* https://stackoverflow.com/questions/18752202/check-if-application-is-installed-android

반응형

'Development > Android' 카테고리의 다른 글

Gson 라이브러리 사용하기  (0) 2022.01.25
Android Notification 만들기  (0) 2022.01.13
Material Design 3  (0) 2021.12.03
안드로이드 액션바 제거하기  (0) 2021.11.08
Android BottomNavigationView 텍스트 라벨처리  (0) 2021.10.04