Notice
Recent Posts
Recent Comments
Link
투케이2K
46. (AndroidStudio/android/java) 앱이 설치되어있으면 실행, 아니면 마켓이동 실시 메소드 본문
/* =========================== */
[ 개발 환경 설정 ]
개발 툴 : AndroidStudio
개발 언어 : java
/* =========================== */
/* =========================== */
[소스 코드]
//========== [앱이 설치되어있으면 실행, 아니면 마켓이동 실시 메소드] ==========
public void goAppRun(String packageNames){
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 > goAppRun() 메소드 : 앱 실행 및 마켓 이동 실시]");
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 설치되어 있으면
/**
* 1) 구글 플레이스토어에서 앱이 설치된지 확인
* 2) 설치되지 않은 경우 앱 설치 진행 / 설치된 경우 url schema 로 외부앱 실행 실시 (액티비티 즉시 이동)
* 3) 외부앱과 패키지명이 반드시 달라야한다.
*/
//TODO ===== 메인으로 인텐트 이동 =====
try {
Intent intent = getPackageManager().getLaunchIntentForPackage(packageNames); //메인으로 그냥 이동
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
overridePendingTransition(0,0);
}
catch (Exception e){
e.printStackTrace();
String alertTitle = "외부 앱 설치 여부 확인";
String buttonMessage = "외부 앱이 설치된것을 다시 확인해 주시기 바랍니다.";
String buttonNo = "";
String buttonYes = "확인";
new AlertDialog.Builder(A_Main.this)
.setTitle(alertTitle)
.setIcon(R.drawable.ic_launcher)
.setMessage(buttonMessage)
.setCancelable(false)
.setPositiveButton(buttonYes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
try {
//구글 플레이스토어 앱에서 이동한다.
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){
//구글 플레이스토어 앱이 없을 경우 홈페이지에서 이동한다.
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
}
})
.show();
}
}
else{ //TODO 설치되어있지 않으면
try {
//구글 플레이스토어 앱에서 이동한다.
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){
//구글 플레이스토어 앱이 없을 경우 홈페이지에서 이동한다.
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();
}
}
}
/* =========================== */
반응형
'Android' 카테고리의 다른 글
Comments