Notice
Recent Posts
Recent Comments
Link
투케이2K
520. (kotlin/코틀린) [유틸 파일] goSamsungBrowser : 삼성 브라우저 사용해 외부 링크 이동 실시 본문
Kotlin
520. (kotlin/코틀린) [유틸 파일] goSamsungBrowser : 삼성 브라우저 사용해 외부 링크 이동 실시
투케이2K 2024. 8. 20. 21:02[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Kotlin
[소스 코드]
// ----------------------------------------------------------------------------------
// TODO [SEARCH FAST] : [goSamsungBrowser] : 삼성 브라우저 사용해 외부 링크 이동 실시
// ----------------------------------------------------------------------------------
fun goSamsungBrowser(mContext: Context, url: String) {
/**
* // -----------------------------------------
* [goSamsungBrowser 메소드 설명]
* // -----------------------------------------
* 1. 삼성 브라우저 사용해 외부 링크 이동 실시
* // -----------------------------------------
* 2. 호출 방법 : C_MoveApp.goSamsungBrowser(this@A_Intro, "https://www.naver.com")
* // -----------------------------------------
* 3. 로 직 : 삼성 앱이 설치된 경우 삼성 브라우저 외부 링크 이동 / 아니면 기본 URL 외부 링크 이동 실시
* // -----------------------------------------
* 4. TODO [중요] AndroidManifest.xml 파일에서 queries >> package 등록 필요 (com.sec.android.app.sbrowser)
* // -----------------------------------------
* */
// [URL 주소 공백 제거 실시]
val urlData = url.replace(" ","")
// [사전 주소 널 여부 체크]
if (C_Util.stringNotNull(urlData) == true){
}
else { // [주소가 널인 경우]
// ===============================================================
S_Log._F_(mContext, "삼성 브라우저 사용해 외부 링크 이동 실패", arrayOf(
"ERROR :: " + "주소 null 널 임",
"URL :: " + urlData.toString()
))
// ===============================================================
return
}
// [사전 주소 http 시작 체크]
if (urlData.startsWith("http://") == true || urlData.startsWith("https://") == true){
}
else {
// ===============================================================
S_Log._F_(mContext, "삼성 브라우저 사용해 외부 링크 이동 실패", arrayOf(
"ERROR :: " + "URL 주소 형식 아님 >> http 시작 체크 필요",
"URL :: " + urlData.toString()
))
// ===============================================================
return
}
// [크롬 특정 패키지 명 변수 선언]
val packageNames = "com.sec.android.app.sbrowser"
// [외부앱이 설치되었는지 확인]
try {
// [특정 패키지 명이 앱에 설치 되어 있는지 확인]
val existPackage = mContext.packageManager.getLaunchIntentForPackage(packageNames)
if (existPackage != null) { // [설치되어 있는 경우]
// ===============================================================
S_Log._F_(mContext, "삼성 브라우저 사용해 외부 링크 이동 실시 [삼성 브라우저 설치 확인]", arrayOf(
"찾을려는 앱 :: $packageNames",
"상 태 :: " + "외부 앱 설치 됨",
"로 직 :: " + "삼성 브라우저 사용해 외부 링크 열기 수행",
"URL :: $urlData"
))
// ===============================================================
// [삼성 브라우저를 통해 외부 링크 호출]
val intent = Intent(Intent.ACTION_VIEW)
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
intent.setPackage(packageNames) // [크롬 브라우저 지정]
intent.data = Uri.parse(urlData) // [공백 제거]
mContext.startActivity(intent)
}
else { // [설치되지 않은 경우]
// ===============================================================
S_Log._F_(mContext, "삼성 브라우저 사용해 외부 링크 이동 실시 [삼성 브라우저 설치 확인 실패]", arrayOf(
"찾을려는 앱 :: $packageNames",
"상 태 :: " + "외부 앱 설치 안됨",
"로 직 :: " + "일반 브라우저 사용해 외부 링크 열기 수행",
"URL :: $urlData"
))
// ===============================================================
// [일반 브라우저 외부링크 이동 실시]
val go = Intent(Intent.ACTION_VIEW)
go.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
go.data = Uri.parse(urlData) // [공백 제거]
mContext.startActivity(go)
}
}
catch (e: ActivityNotFoundException) {
// TODO [이동할 패키지 명을 찾이 못한 경우]
// ===============================================================
S_Log._printStackTrace_(mContext, "삼성 브라우저 사용해 외부 링크 이동 실시 [삼성 브라우저 설치 확인 실패]", arrayOf(
"찾을려는 앱 :: $packageNames",
"상 태 :: " + "ActivityNotFoundException",
"로 직 :: " + "일반 브라우저 사용해 외부 링크 열기 수행",
"URL :: $urlData"
), e)
// ===============================================================
// [일반 브라우저 외부링크 이동 실시]
val go = Intent(Intent.ACTION_VIEW)
go.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
go.data = Uri.parse(urlData) // [공백 제거]
mContext.startActivity(go)
}
catch (e: Exception) {
// ===============================================================
S_Log._printStackTrace_(mContext, "삼성 브라우저 사용해 외부 링크 이동 실시 [삼성 브라우저 설치 확인 실패]", arrayOf(
"찾을려는 앱 :: $packageNames",
"상 태 :: " + "Exception",
"로 직 :: " + "일반 브라우저 사용해 외부 링크 열기 수행",
"URL :: $urlData"
), e)
// ===============================================================
// [일반 브라우저 외부링크 이동 실시]
val go = Intent(Intent.ACTION_VIEW)
go.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
go.data = Uri.parse(urlData) // [공백 제거]
mContext.startActivity(go)
}
}
반응형
'Kotlin' 카테고리의 다른 글
Comments