투케이2K

924. (Android/Java) [유틸 파일] getJsonAppUseInfo : App 앱 사용 정보 포맷 수행 - 앱 로드 수행 시 정보 저장 본문

Android

924. (Android/Java) [유틸 파일] getJsonAppUseInfo : App 앱 사용 정보 포맷 수행 - 앱 로드 수행 시 정보 저장

투케이2K 2024. 12. 27. 18:30

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Java / Kotlin

 

[소스 코드]

 

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Java / Kotlin

- 개발 툴 : AndroidStudio

- 기술 구분 : 유틸 파일 / App Info / Device Info

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------

// -----------------------------------------------------------------------------------------
// TODO [SEARCH FAST] : [RETURN] : [Format] : getJsonAppUseInfo : App 앱 사용 정보 포맷 수행
// -----------------------------------------------------------------------------------------
public static String getJsonAppInfo(Context mContext, String uniqueValue){

    /**
        * // -----------------------------------------
        * [getJsonAppInfo 메소드 설명]
        * // -----------------------------------------
        * 1. App 앱 사용 정보 포맷 수행
        * // -----------------------------------------
        * 2. 호출 방법 : C_Format.getJsonAppInfo(A_Intro.this, "Twok");
        * // -----------------------------------------
        * 3. 리턴 데이터 : App 정보 json 포맷 String 데이터
        *
        * {
        *         "uniqueValue": "Twok",
        *         "appRuningDate": "2024-12-27 15:00:37",
        *         "appPackageName": "com.example.javaproject.staging",
        *         "appVersionCode": "1",
        *         "appVersionName": "1.0.1-STAGING",
        *         "appMinSdkVersion": "21",
        *         "appCompileSdkVersion": "33",
        *         "appFistInstall": "2024-12-04 17:16:09",
        *         "appUpdateInstall": "2024-12-26 11:00:37",
        *         "devicePlatform": "Android",
        *         "deviceOsVersion": "14",
        *         "deviceModelName": "[samsung] SM-S906N",
        *         "deviceUniqueId": "721234D486567867",
        *         "deviceRamSize": "7.8",
        *         "deviceRamUsed": "45%",
        *         "deviceInnerStorageSize": "223.5 GB",
        *         "deviceWakeupTime": "0 (H)"
        *       }
        * // -----------------------------------------
        * */


    // [리턴 변수 선언 실시]
    String returnData = "";
    String M_LOG = "";


    // [구분 처리 실시]
    try {

        if (mContext != null){

            // [JSON 객체 선언]
            JSONObject jsonObject = new JSONObject();


            // [데이터 삽입 실시]
            jsonObject.put("uniqueValue", String.valueOf(uniqueValue)); // TODO [특정 사용자 구분 유니크 값]

            jsonObject.put("appRuningDate", String.valueOf(C_Util.getNowDateTime24())); // [앱 동작 시작 시간]
            jsonObject.put("appPackageName", String.valueOf(C_App.getMobilePackageName(mContext))); // [패키지 명칭]
            jsonObject.put("appVersionCode", String.valueOf(C_App.getMobileCode(mContext))); // [앱 버전 코드]
            jsonObject.put("appVersionName", String.valueOf(C_App.getMobileVersion(mContext))); // [앱 버전 이름]
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                jsonObject.put("appMinSdkVersion", String.valueOf(C_App.getAppMinSdkVersion(mContext, C_App.getMobilePackageName(mContext)))); // [앱 Min Sdk 버전 확인]
            }
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
                jsonObject.put("appCompileSdkVersion", String.valueOf(C_App.getAppCompileSdkVersion(mContext, C_App.getMobilePackageName(mContext)))); // [앱 Compile Sdk 버전 확인]
            }
            jsonObject.put("appFistInstall", String.valueOf(C_App.appInstallFirstTime(mContext, C_App.getMobilePackageName(mContext)))); // [앱 최초 설치 일자]
            jsonObject.put("appUpdateInstall", String.valueOf(C_App.appInstallUpdateTime(mContext, C_App.getMobilePackageName(mContext)))); // [앱 업데이트 설치 일자]
            //jsonObject.put("appExitReason", String.valueOf(C_App.getAppExitReason(mContext, C_App.getMobilePackageName(mContext)))); // [최근 앱 종료 이유 확인]

            jsonObject.put("devicePlatform", "Android"); // [기기 플랫폼 : 하드 코딩]
            jsonObject.put("deviceOsVersion", String.valueOf(C_App.getDeviceOsVersion())); // [기기 Os 정보]
            jsonObject.put("deviceModelName", String.valueOf(C_App.getDeviceModelName())); // [기기 모델 명칭]
            jsonObject.put("deviceUniqueId", String.valueOf(C_App.getAndroidID(mContext))); // [기기 고유 값]
            jsonObject.put("deviceRamSize", String.valueOf(C_App.getRamMemoryTotal(mContext))); // [기기 Ram 크기]
            jsonObject.put("deviceRamUsed", String.valueOf(C_App.getRamMemoryUsed(mContext))); // [기기 Ram 사용량]
            jsonObject.put("deviceInnerStorageSize", String.valueOf(C_App.getInnerStorageSize(mContext))); // [기기 내장 저장 공간 크기 확인]
            jsonObject.put("deviceWakeupTime", String.valueOf(C_App.getPhoneUsedTime(mContext))); // [휴대폰 사용 시간, 휴대폰 가동 시간 확인]


            // [리턴 변수에 데이터 삽입]
            returnData = jsonObject.toString();
            M_LOG = "[Success] :: Get App Use Info";

        }
        else {
            M_LOG = "[Error] :: mContext Is Null";
        }

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


    // [로그 출력 실시]
    //*
    // ===============================================================
    S_Log._D_("App 앱 사용 정보 포맷 수행", new String[] {
            "M_LOG :: " + String.valueOf(M_LOG),
            "RETURN :: " + String.valueOf(returnData)
    });
    // ===============================================================
    // */


    // [리턴 데이터 반환]
    return returnData;
}

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[결과 출력]
// --------------------------------------------------------------------------------------

W///===========//: ================================================
I/: [LOG :: CLASS PLACE :: com.example.javaproject.A_Intro.onCreate(A_Intro.java:314)]
I/: ----------------------------------------------------
I/: [LOG :: DESCRIPTION :: A_Intro :: onCreate :: 앱 사용 정보 확인]
I/: ----------------------------------------------------
I/: [LOG :: {
      "nameValuePairs": {
        "uniqueValue": "Twok",
        "appRuningDate": "2024-12-27 15:00:37",
        "appPackageName": "com.example.javaproject.staging",
        "appVersionCode": "1",
        "appVersionName": "1.0.1-STAGING",
        "appMinSdkVersion": "21",
        "appCompileSdkVersion": "33",
        "appFistInstall": "2024-12-04 17:16:09",
        "appUpdateInstall": "2024-12-26 11:00:37",
        "devicePlatform": "Android",
        "deviceOsVersion": "14",
        "deviceModelName": "[samsung] SM-S906N",
        "deviceUniqueId": "721234D486567867",
        "deviceRamSize": "7.8",
        "deviceRamUsed": "45%",
        "deviceInnerStorageSize": "223.5 GB",
        "deviceWakeupTime": "0 (H)"
      }
    }]
W///===========//: ================================================

// --------------------------------------------------------------------------------------

 

반응형
Comments