투케이2K

536. (kotlin/코틀린) [유틸 파일] isInstallApp : 특정 앱 설치 여부 확인 - PackageInfo 본문

Kotlin

536. (kotlin/코틀린) [유틸 파일] isInstallApp : 특정 앱 설치 여부 확인 - PackageInfo

투케이2K 2024. 12. 5. 21:18

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

 

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

- 언어 : Java / Kotlin


- 개발 툴 : AndroidStudio


- 기술 및 구분 : 유틸 파일 / 앱 설치 확인 / PackageInfo

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






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


  // -----------------------------------------------------------------------------------------
  // TODO [SEARCH FAST] : [RETURN] isInstallApp : 특정 앱 설치 여부 확인
  // -----------------------------------------------------------------------------------------
  fun isInstallApp(mContext: Context?, packageName: String): Boolean {

      /**
        * // -----------------------------------------
        * [isInstallApp 메소드 설명]
        * // -----------------------------------------
        * 1. 특정 앱 설치 여부 확인
        * // -----------------------------------------
        * 2. 호출 방법 : C_App.isInstallApp(A_Main@this, "com.example.kotlinproject")
        * // -----------------------------------------
        * 3. 리턴 데이터 : 설치된 경우 true / 없는 경우 false
        * // -----------------------------------------
        * 4. 필요 설정 : AndroidManifest.xml 파일
        *
        * <queries>
        *      <package android:name="com.example.kotlinproject"></package>
        * </queries>
        * // -----------------------------------------
        */


      // [리턴 변수 선언]
      var returnData = false
      var M_LOG = ""


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

          // [인풋 데이터 널 체크]
          if (mContext != null && C_Util.stringNotNull(packageName) === true) {

              try {

                  // [PackageInfo 선언]
                  var pi: PackageInfo? = null
                  pi = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
                      mContext.packageManager.getPackageInfo(packageName, PackageManager.PackageInfoFlags.of(0L))
                  } else {
                      mContext.packageManager.getPackageInfo(packageName, 0)
                  }

                  val appInfo = pi!!.applicationInfo

                  M_LOG += "\npackageName : $packageName"

                  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                      M_LOG += "\nminSdkVersion : ${appInfo.minSdkVersion}"
                  }

                  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
                      M_LOG += "\ncompileSdkVersion : ${appInfo.compileSdkVersion}"
                  }

                  returnData = true

              } catch (eq: Exception) {
                  eq.printStackTrace()
                  M_LOG = "[Exception] : " + eq.message.toString()
              }

          } else {
              M_LOG = "[Error] : Input Data Is Null"
          }

      } catch (e: Exception) {
          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 :: C_App.isInstallApp]
I/: ----------------------------------------------------
I/: [LOG :: DESCRIPTION :: 특정 앱 설치 여부 확인]
I/: ----------------------------------------------------
I/: [LOG :: M_LOG :: 
    packageName : com.example.kotlinproject
    minSdkVersion : 21
    compileSdkVersion : 33]
I/: ----------------------------------------------------
I/: [LOG :: RETURN :: true]
D///===========//: ================================================

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

 

반응형
Comments