Notice
Recent Posts
Recent Comments
Link
투케이2K
165. (AndroidStudio/android/java) Intent setPackage 사용해 외부 링크 브라우저 크롬 사용해 로드 - 타겟 30 및 안드로이드 11 대응 본문
Android
165. (AndroidStudio/android/java) Intent setPackage 사용해 외부 링크 브라우저 크롬 사용해 로드 - 타겟 30 및 안드로이드 11 대응
투케이2K 2021. 5. 26. 17:22/* =========================== */
[ 개발 환경 설정 ]
개발 툴 : AndroidStudio
개발 언어 : java
/* =========================== */
/* =========================== */
[소스 코드]
/** ========== [크롬 브라우저 사용해 외부 링크 이동 실시] ========== **/
public void callChromeBrowser(String url){
//TODO [안드로이드 OS 11 및 타겟 30 이상 필수 사항]
/**
* [AndroidManifest.xml 파일 > manifest 부분 > 특정 앱 패키지명 등록 필요]
* <queries>
* <package android:name="com.android.chrome" />
* <package android:name="kr.co.two2k.manager" />
* </queries>
* */
//TODO [크롬 브라우저 패키지명]
final String packageNames = "com.android.chrome";
//TODO [URL 주소 확인 실시]
String urlParse = String.valueOf(url);
if(urlParse.startsWith("https:") || urlParse.startsWith("http:")){
urlParse = urlParse.trim();
urlParse = urlParse.replaceAll(" ","");
}
else {
urlParse = "https:" + urlParse;
urlParse = urlParse.trim();
urlParse = urlParse.replaceAll(" ","");
}
final String urlData = urlParse;
//TODO [크롬 브라우저 설치 상태 확인 실시]
boolean isExist = false;
PackageManager packageManager = getPackageManager();
List<ResolveInfo> mApps;
Intent mIntent = new Intent(Intent.ACTION_MAIN, null);
mIntent.addCategory(Intent.CATEGORY_LAUNCHER);
mApps = packageManager.queryIntentActivities(mIntent, 0);
try {
Log.d("---","---");
Log.d("//===========//","================================================");
Log.d("","\n"+"[goAppRun > callChromeBrowser() 메소드 : 크롬 브라우저 외부 링크 이동 실시]");
Log.d("","\n"+"[찾을려는 앱 : "+packageNames+"]");
Log.d("","\n"+"[설치된 앱 : "+mApps.toString()+"]");
Log.d("//===========//","================================================");
Log.d("---","---");
for (int i = 0; i < mApps.size(); i++) {
if(mApps.get(i).activityInfo.packageName.startsWith(packageNames)){
isExist = true;
break;
}
}
} catch (Exception e) {
isExist = false;
}
if(isExist == true){ //TODO [크롬 브라우저가 설치된 경우]
//TODO [크롬 브라우저를 통해 외부 링크 호출]
try {
Log.d("---","---");
Log.w("//===========//","================================================");
Log.d("","\n"+"[goAppRun > callChromeBrowser() 메소드 : 크롬 브라우저 외부 링크 이동 실시]");
Log.d("","\n"+"[상태 : "+"크롬 설치 된 상태"+"]");
Log.d("","\n"+"[주소 : "+urlData+"]");
Log.w("//===========//","================================================");
Log.d("---","---");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
intent.setPackage(packageNames); //TODO [크롬 브라우저 지정]
intent.setData(Uri.parse(urlData));
startActivity(intent);
overridePendingTransition(0,0);
}
catch (Exception e){
e.printStackTrace();
}
}
else{ //TODO [크롬 브라우저가 설치되지 않은 경우]
try {
Log.d("---","---");
Log.e("//===========//","================================================");
Log.d("","\n"+"[goAppRun > callChromeBrowser() 메소드 : 크롬 브라우저 외부 링크 이동 실시]");
Log.d("","\n"+"[상태 : "+"크롬 설치 안된 상태"+"]");
Log.d("","\n"+"[주소 : "+urlData+"]");
Log.e("//===========//","================================================");
Log.d("---","---");
String Tittle = "[알 림]";
String Message = "안드로이드는 크롬 브라우저에 최적화되었습니다. 마켓으로 이동해 다운받으시겠습니까?";
String buttonYes = "마켓이동";
String buttonNo = "기본 브라우저 이동";
new AlertDialog.Builder(A_AA_Test_Java.this)
.setTitle(Tittle)
//.setIcon(R.drawable.ic_launcher)
.setMessage(Message)
//.setCancelable(false)
.setPositiveButton(buttonYes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
try {
//TODO [구글 플레이스토어 앱에서 이동한다.]
Intent marketLaunch = new Intent(Intent.ACTION_VIEW);
marketLaunch.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
marketLaunch.setData(Uri.parse("market://details?id="+packageNames));
startActivity(marketLaunch);
overridePendingTransition(0,0);
}
catch (Exception e){
//TODO [구글 플레이스토어 앱이 없을 경우 홈페이지에서 이동한다.]
Intent marketLaunch = new Intent(Intent.ACTION_VIEW);
marketLaunch.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
marketLaunch.setData(Uri.parse("https://play.google.com/store/apps/details?id="+packageNames));
startActivity(marketLaunch);
overridePendingTransition(0,0);
e.printStackTrace();
}
}
})
.setNegativeButton(buttonNo, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
//TODO [일반 기본 설정된 브라우저로 이동]
Intent go = new Intent(Intent.ACTION_VIEW);
go.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
go.setData(Uri.parse(urlData));
startActivity(go);
overridePendingTransition(0,0);
}
})
.show();
}
catch (Exception e){
e.printStackTrace();
}
}
}
/* =========================== */
/* =========================== */
[결과 출력]
/* =========================== */
반응형
'Android' 카테고리의 다른 글
Comments