투케이2K

443. (kotlin/코틀린) packageManager.getInstalledApplications 사용해 휴대폰에 설치 된 앱 패키지 명칭 목록 확인 본문

Kotlin

443. (kotlin/코틀린) packageManager.getInstalledApplications 사용해 휴대폰에 설치 된 앱 패키지 명칭 목록 확인

투케이2K 2023. 12. 4. 20:31
반응형

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

        // -----------------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : [RETURN] getAppInstallPackgesList : 휴대폰 기기에 설치 된 앱 패키지 목록 반환
        // -----------------------------------------------------------------------------------------
        fun getAppInstallPackgesList(mContext: Context): ArrayList<String> {

            /**
             * // -----------------------------------------
             * [getAppInstallPackgesList 메소드 설명]
             * // -----------------------------------------
             * 1. 휴대폰 기기에 설치 된 앱 패키지 목록 반환
             * // -----------------------------------------
             * 2. 호출 방식 :
             *
             * C_App.getAppInstallPackgesList(A_Intro@this)
             *
             * // -----------------------------------------
             * 3. 리턴 데이터 :
             *
             * [
             * "com.google.android.networkstack.tethering",
             * "com.samsung.android.provider.filterprovider",
             * .......,
             * ]
             *
             * // -----------------------------------------
             * 4. 필요 권한 :
             *
             * <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
             * // -----------------------------------------
             */


            // [리턴 값 선언]
            val returnData = ArrayList<String>()
            var M_LOG = ""


            // [로직 처리 실시]
            try {

                // [패키지 관리자 인스턴스 취득]
                val packageManager = mContext.packageManager


                // [설치된 앱 목록 확인]
                var applicationInfoList: MutableList<ApplicationInfo>? = null

                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){
                    applicationInfoList = packageManager.getInstalledApplications(PackageManager.ApplicationInfoFlags.of(0L))
                }
                else {
                    applicationInfoList = packageManager.getInstalledApplications(PackageManager.GET_META_DATA)
                }

                M_LOG = if (applicationInfoList != null && applicationInfoList.size > 0) {
                    for (i in applicationInfoList.indices) {
                        returnData.add(applicationInfoList[i].packageName)
                    }
                    "[Success] [get] applicationInfoList"
                } else {
                    "[Error] [get] applicationInfoList"
                }

            } catch (e: Exception) {
                M_LOG = "[Exception] :: " + e.message.toString()
                S_Log._printStackTrace_(mContext, S_FinalMsg.LOG_BUG_STATE, null, e)
            }


            // [로그 출력 실시]
            ///*
            // ===============================================================
            S_Log._D_("휴대폰 기기에 설치 된 앱 패키지 목록 반환", arrayOf(
                "M_LOG :: $M_LOG",
                "RETURN :: $returnData"
            ))
            // ===============================================================
            // */


            // [리턴 반환 실시]
            return returnData
        }
 

[결과 출력]

 

D///===========//: ================================================
I/: [LOG :: CLASS PLACE :: com.example.kotlinproject.C_App.getAppInstallPackgesList]
I/: ----------------------------------------------------
I/: [LOG :: NOW TIME :: 2023-12-04 09:43:00 월요일]
I/: ----------------------------------------------------
I/: [LOG :: DESCRIPTION :: 휴대폰 기기에 설치 된 앱 패키지 목록 반환]
I/: ----------------------------------------------------
I/: [LOG :: M_LOG :: [Success] [get] applicationInfoList]
I/: ----------------------------------------------------
I/: [LOG :: RETURN :: [com.google.android.networkstack.tethering, com.samsung.android.provider.filterprovider ....
D///===========//: ================================================

 

반응형
Comments