Notice
Recent Posts
Recent Comments
Link
투케이2K
93. (TWOK/LOGIC) [android] 안드로이드 외부 링크 연동 시 크롬 및 삼성 브라우저 지정 URL 주소 링크 열기 본문
투케이2K 로직정리
93. (TWOK/LOGIC) [android] 안드로이드 외부 링크 연동 시 크롬 및 삼성 브라우저 지정 URL 주소 링크 열기
투케이2K 2024. 10. 18. 18:44[로직 정리]
정리 로직 : Android / 안드로이드
상태 : [android] 안드로이드 외부 링크 연동 시 크롬 및 삼성 브라우저 지정 URL 주소 링크 열기
[설 명]
// --------------------------------------------------------------------------------------
[사전) 설정 및 정보 확인 사항]
// --------------------------------------------------------------------------------------
- AndroidManifest.xml 파일에서 App To App 이동을 위한 queries 크롬 및 삼성 브라우저 패키지 명칭 지정 필요
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.javaproject">
<!-- ============================================================= -->
<!-- [외부앱 설치 확인 및 외부앱 열기 패키지 선언 부분] -->
<!-- ============================================================= -->
<queries>
<!-- [기본 크롬] -->
<package android:name="com.android.chrome" />
<!-- [삼성 브라우저] -->
<package android:name="com.sec.android.app.sbrowser" />
</queries>
<!-- ============================================================= -->
<!-- [애플리케이션 설정] -->
<!-- ============================================================= -->
<application
android:name=".A_Application"
tools:replace="android:allowBackup">
</application>
</manifest>
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[로직 설명]
// --------------------------------------------------------------------------------------
1. 안드로이드 외부 링크를 열기 위한 사전 URL 주소 확인 (http, https 로 시작 체크 및 URL 형식 체크)
2. 외부 링크로 URL 주소를 열기 위해 사전) 크롬 및 삼성 브라우저 애플리케이션이 설치 된 상태 확인하기
// [크롬 : com.android.chrome / 삼성 브라우저 : com.sec.android.app.sbrowser]
Intent existPackage = mContext.getPackageManager().getLaunchIntentForPackage(packageNames);
if (existPackage != null) { // [설치되어 있는 경우]
S_Log._W_("C_MoveApp >> goBrowser() :: 외부 링크 이동 실시", new String[]{
"찾을려는 앱 :: " + String.valueOf(packageNames),
"url :: " + String.valueOf(urlData),
"상태 :: 외부 앱 설치 됨"
});
}
else { // [설치되지 않은 경우]
S_Log._E_("C_MoveApp >> goBrowser() :: 외부 링크 이동 실패", new String[]{
"찾을려는 앱 :: " + String.valueOf(packageNames),
"url :: " + String.valueOf(urlData),
"로직 :: 일반 브라우저 사용해 외부 링크 이동 실시"
});
}
3. 정상적으로 크롬 및 삼성 브라우저가 설치 된 경우 intent.setPackage(packageNames); 패키지 명칭 지정해 외부 링크 열기 실시
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
intent.setPackage(packageNames); // [크롬 및 삼성 브라우저 지정]
intent.setData(Uri.parse(urlData));
mContext.startActivity(intent);
4. 크롬 및 삼성 브라우저 설치를 확인할 수 없는 경우는 기본 휴대폰에 설정 된 브라우저로 외부 링크 열기 실시
Intent go = new Intent(Intent.ACTION_VIEW);
go.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
go.setData(Uri.parse(urlData));
mContext.startActivity(go);
5. 참고 : 크롬 및 삼성 브라우저 열기 소스 코드
// [크롬 및 삼성 브라우저 설치 여부 확인 >> 외부 링크 열기 수행]
try {
// [크롬 : com.android.chrome / 삼성 브라우저 : com.sec.android.app.sbrowser]
Intent existPackage = mContext.getPackageManager().getLaunchIntentForPackage(packageNames);
if (existPackage != null) { // [설치되어 있는 경우]
S_Log._W_("C_MoveApp >> goBrowser() :: 외부 링크 이동 실시", new String[]{
"찾을려는 앱 :: " + String.valueOf(packageNames),
"url :: " + String.valueOf(urlData),
"상태 :: 외부 앱 설치 됨"
});
// [크롬 및 삼성 브라우저를 통해 외부 링크 호출]
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
intent.setPackage(packageNames); // [크롬 및 삼성 브라우저 지정]
intent.setData(Uri.parse(urlData));
mContext.startActivity(intent);
}
else { // [설치되지 않은 경우]
S_Log._E_("C_MoveApp >> goBrowser() :: 외부 링크 이동 실패", new String[]{
"찾을려는 앱 :: " + String.valueOf(packageNames),
"url :: " + String.valueOf(urlData),
"로직 :: 일반 브라우저 사용해 외부 링크 이동 실시"
});
// [일반 기본 설정된 브라우저로 이동]
Intent go = new Intent(Intent.ACTION_VIEW);
go.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
go.setData(Uri.parse(urlData));
mContext.startActivity(go);
}
}
catch (ActivityNotFoundException e) { // TODO [이동할 패키지 명을 찾이 못한 경우]
S_Log._E_("C_MoveApp >> goBrowser() :: 외부 링크 이동 실패", new String[]{
"찾을려는 앱 :: " + String.valueOf(packageNames),
"url :: " + String.valueOf(urlData),
"로직 :: 일반 브라우저 사용해 외부 링크 이동 실시",
"ActivityNotFoundException :: " + String.valueOf(e.getMessage())
});
// [일반 기본 설정된 브라우저로 이동]
Intent go = new Intent(Intent.ACTION_VIEW);
go.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
go.setData(Uri.parse(urlData));
mContext.startActivity(go);
}
catch (Exception e){
S_Log._E_("C_MoveApp >> goBrowser() :: 외부 링크 이동 실패", new String[]{
"찾을려는 앱 :: " + String.valueOf(packageNames),
"url :: " + String.valueOf(urlData),
"로직 :: 일반 브라우저 사용해 외부 링크 이동 실시",
"Exception :: " + String.valueOf(e.getMessage())
});
// [일반 기본 설정된 브라우저로 이동]
Intent go = new Intent(Intent.ACTION_VIEW);
go.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
go.setData(Uri.parse(urlData));
mContext.startActivity(go);
}
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
[외부 링크 (크롬, 사파리) 이동 시 url 형식 체크 에러 이슈]
https://blog.naver.com/kkh0977/222844963121?trackingCode=blog_bloghome_searchlist
[안드로이드 Intent 수행 시 크롬 (chrome) 브라우저 실행해 외부 링크 열기 - setPackage]
https://blog.naver.com/kkh0977/223191665993?trackingCode=blog_bloghome_searchlist
[[유틸 파일] goSamsungBrowser : 삼성 브라우저 사용해 외부 링크 이동 실시]
https://blog.naver.com/kkh0977/223551090903?trackingCode=blog_bloghome_searchlist
// --------------------------------------------------------------------------------------
반응형
'투케이2K 로직정리' 카테고리의 다른 글
Comments