투케이2K

673. (Android/Java) Intent.ACTION_DELETE 사용해 특정 앱 삭제 수행 - app delete 본문

Android

673. (Android/Java) Intent.ACTION_DELETE 사용해 특정 앱 삭제 수행 - app delete

투케이2K 2023. 10. 26. 11:38

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[소스 코드]

    // -----------------------------------------------------------------------------------------
    // TODO [SEARCH FAST] : [RETURN] remove_App : 패키지 명 사용해 특정 앱 삭제 수행 - App Delete
    // -----------------------------------------------------------------------------------------
    public static Boolean remove_App(Context mContext, final String packageNames){

        /**
         * // -----------------------------------------
         * [remove_App 메소드 설명]
         * // -----------------------------------------
         * 1. 패키지 명 사용해 특정 앱 삭제 수행 - App Delete
         * // -----------------------------------------
         * 2. 호출 방법 : C_App.remove_App(A_Main.this, "com.test.app");
         * // -----------------------------------------
         * 3. 로 직 : 조건 체크 수행 후 삭제할 앱이 있는 경우 true / 아닌 경우 false
         * // -----------------------------------------
         * 4. TODO [중요] AndroidManifest.xml 파일에서 queries >> package 등록 필요
         * // -----------------------------------------
         * 5. TODO [중요] 퍼미션 등록 필요
         * <uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES"/>
         * // -----------------------------------------
         * */


        // [리턴 변수 선언]
        boolean returnData = false;
        String M_LOG = "";


        // [사전 패키지 명이 널인지 체크 실시]
        if (C_Util.stringNotNull(packageNames) == true){

            // [외부앱이 설치되었는지 확인]
            try {

                // [특정 패키지 명이 앱에 설치 되어 있는지 확인]
                Intent existPackage = mContext.getPackageManager().getLaunchIntentForPackage(packageNames);

                if (existPackage != null) { // [설치 되어 있는 경우]

                    // [앱 삭제 수행]
                    Intent intent = new Intent(Intent.ACTION_DELETE);
                    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                    intent.setData(Uri.parse(String.format("package:%s", packageNames)));
                    mContext.startActivity(intent);

                    M_LOG = "[remove_App] :: [Success] :: App Install File Found";
                    returnData = true;
                }
                else { // [설치 되지 않은 경우]
                    M_LOG = "[remove_App] :: [Error] :: App Install Not Found";
                }
            }
            catch (ActivityNotFoundException e) {
                // [이동할 패키지 명을 찾이 못한 경우]
                M_LOG = "[remove_App] :: [ActivityNotFoundException] :: " + String.valueOf(e.getMessage());
            }
            catch (Exception e){
                M_LOG = "[remove_App] :: [Exception] :: " + String.valueOf(e.getMessage());
            }

        }
        else { // [패키지 명이 널인 경우]
            M_LOG = "[remove_App] :: [Error] :: Input PackageName Is Null";
        }


        // [로그 출력 실시]
        // ===============================================================
        S_Log._D_("패키지 명 사용해 특정 앱 삭제 수행", new String[]{
                "INPUT :: " + String.valueOf(packageNames),
                "M_LOG :: " + String.valueOf(M_LOG),
                "RETURN :: " + String.valueOf(returnData)
        });
        // ===============================================================


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

[결과 출력]

 

반응형
Comments