Notice
Recent Posts
Recent Comments
Link
투케이2K
281. (kotlin/코틀린) [유틸 파일] goGoogleMap : 구글 맵 이동 실시 메소드 (intent setPackage google map) 본문
Kotlin
281. (kotlin/코틀린) [유틸 파일] goGoogleMap : 구글 맵 이동 실시 메소드 (intent setPackage google map)
투케이2K 2023. 5. 1. 09:35[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Kotlin
[소스 코드]
// ----------------------------------------------------------------------------------
// TODO [SEARCH FAST] : [goGoogleMap] : 구글 맵 이동 실시 메소드
// ----------------------------------------------------------------------------------
fun goGoogleMap(mContext: Context, geo: String) {
/**
* // -----------------------------------------
* [goGoogleMap 메소드 설명]
* // -----------------------------------------
* 1. 구글 맵 이동 실시 메소드
* // -----------------------------------------
* 2. 호출 방법 : C_MoveApp.goGoogleMap(A_Main@this, "geo:37.564213,127.001698")
* // -----------------------------------------
* 3. 로 직 : 구글 앱이 설치되지 않은 경우 브라우저로 지도 실행 / 설치된 경우 구글 앱으로 지도 실행
* // -----------------------------------------
* 4. TODO [중요] AndroidManifest.xml 파일에서 queries >> package 등록 필요
*
* <queries>
*
* <package android:name="com.google.android.apps.maps"></package>
*
* </queries>
*
* // -----------------------------------------
*/
// [패키지 명칭 선언 : 구글 맵]
val packageNames = "com.google.android.apps.maps"
// [사전 패키지명이 널인지 체크 실시]
if (C_Util.stringNotNull(packageNames) === true) {
} else { // [패키지 명이 널인 경우]
// ===============================================================
S_Log._E_("구글 맵 이동 실시 [외부 열기 실패]", arrayOf(
"ERROR :: " + "패키지명 null 널 임",
"PACKAGE :: $packageNames"
))
// ===============================================================
return
}
// [사전 geo 인풋값 널 체크 실시]
if (C_Util.stringNotNull(geo) === true && geo.startsWith("geo:") == true) {
} else { // [데이터가 널이 거나 , 형식이 올바르지 않은 경우]
// ===============================================================
S_Log._E_("구글 맵 이동 실시 [외부 열기 실패]", arrayOf(
"ERROR :: " + "인풋 데이터 geo 데이터 null 널 임 / 데이터 형식이 올바르지 않음",
"INPUT :: $geo"
))
// ===============================================================
return
}
// [외부앱이 설치되었는지 확인]
try {
// [특정 패키지 명이 앱에 설치 되어 있는지 확인]
val existPackage = mContext.packageManager.getLaunchIntentForPackage(packageNames)
if (existPackage != null) { // [설치되어 있는 경우]
// ===============================================================
S_Log._D_("구글 맵 이동 실시 [외부 열기]", arrayOf(
"찾을려는 앱 :: $packageNames",
"INPUT :: $geo",
"상 태 :: " + "외부 앱 설치 됨",
"로 직 :: " + "구글 맵 열기 수행"
))
// ===============================================================
// [구글 맵 이동]
val uri = Uri.parse(geo)
val intent = Intent(Intent.ACTION_VIEW, uri)
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
intent.setPackage(packageNames)
mContext.startActivity(intent)
} else { // [설치되지 않은 경우]
// ===============================================================
S_Log._E_("구글 맵 이동 실시 [마켓 이동]", arrayOf(
"찾을려는 앱 :: $packageNames",
"INPUT :: $geo",
"상 태 :: " + "외부 앱 설치 안됨",
"로 직 :: " + "외부 링크 사용해 맵 실행"
))
// ===============================================================
// [외부 링크 이동]
val uri = Uri.parse(geo)
val intent = Intent(Intent.ACTION_VIEW, uri)
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
mContext.startActivity(intent)
}
} catch (e: ActivityNotFoundException) {
// [이동할 패키지 명을 찾이 못한 경우]
// ===============================================================
S_Log._E_("구글 맵 이동 실시 [외부 열기 실패]", arrayOf(
"찾을려는 앱 :: $packageNames",
"INPUT :: $geo",
"상 태 :: " + "ActivityNotFoundException",
"로 직 :: " + "외부 링크 사용해 맵 실행"
))
// ===============================================================
// [외부 링크 이동]
val uri = Uri.parse(geo)
val intent = Intent(Intent.ACTION_VIEW, uri)
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
mContext.startActivity(intent)
} catch (e: Exception) {
// ===============================================================
S_Log._E_("구글 맵 이동 실시 [외부 열기 에러]", arrayOf(
"찾을려는 앱 :: $packageNames",
"INPUT :: $geo",
"상 태 :: " + "Exception",
"로 직 :: " + "NONE"
))
// ===============================================================
}
}
[결과 출력]
D///===========//: ================================================
I/: [LOG :: CLASS PLACE :: com.example.kotlinproject.C_MoveApp$Companion.goGoogleMap(C_MoveApp.kt:540)]
I/: ----------------------------------------------------
I/: [LOG :: DESCRIPTION :: 구글 맵 이동 실시 [외부 열기]]
I/: ----------------------------------------------------
I/: [LOG :: 찾을려는 앱 :: com.google.android.apps.maps]
I/: ----------------------------------------------------
I/: [LOG :: INPUT :: geo:37.564213,127.001698]
I/: ----------------------------------------------------
I/: [LOG :: 상 태 :: 외부 앱 설치 됨]
I/: ----------------------------------------------------
I/: [LOG :: 로 직 :: 구글 맵 열기 수행]
D///===========//: ================================================
반응형
'Kotlin' 카테고리의 다른 글
Comments