투케이2K

704. (Android/Java) packageManager.getInstalledApplications 사용해 휴대폰에 설치 된 앱 패키지 명칭 목록 확인 본문

Android

704. (Android/Java) packageManager.getInstalledApplications 사용해 휴대폰에 설치 된 앱 패키지 명칭 목록 확인

투케이2K 2023. 12. 4. 20:28

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[소스 코드]

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

        /**
         * // -----------------------------------------
         * [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"/>
         * // -----------------------------------------
         * */


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


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

            // [패키지 관리자 인스턴스 취득]
            PackageManager packageManager = mContext.getPackageManager();


            // [설치된 앱 목록 확인]
            List<ApplicationInfo> applicationInfoList = 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);
            }

            if (applicationInfoList != null && applicationInfoList.size()>0){

                for (int i=0; i<applicationInfoList.size(); i++){
                    returnData.add(applicationInfoList.get(i).packageName);
                }

                M_LOG = "[Success] [get] applicationInfoList";
            }
            else {
                M_LOG = "[Error] [get] applicationInfoList";
            }

        } catch (Exception e) {
            M_LOG = "[Exception] :: " + String.valueOf(e.getMessage());
            S_Log._printStackTrace_(mContext, S_FinalMsg.LOG_BUG_STATE, null, e);
        }


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


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

[결과 출력]

 

D///===========//: ================================================
I/: [LOG :: CLASS PLACE :: com.example.javaproject.C_App.getAppInstallPackgesList(C_App.java:9597)]
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