Notice
Recent Posts
Recent Comments
Link
투케이2K
164. (AndroidStudio/android/java) packageManager 사용해 외부 앱 설치 여부 확인 및 마켓 이동 실시 - 타겟 30 및 안드로이드 11 대응 본문
Android
164. (AndroidStudio/android/java) packageManager 사용해 외부 앱 설치 여부 확인 및 마켓 이동 실시 - 타겟 30 및 안드로이드 11 대응
투케이2K 2021. 5. 26. 17:10/* =========================== */
[ 개발 환경 설정 ]
개발 툴 : AndroidStudio
개발 언어 : java
/* =========================== */
/* =========================== */
[소스 코드]
/** ========== [앱이 설치되어있으면 실행, 아니면 마켓이동 실시 메소드] ========== **/
public void goAppRun(final String packageNames){
//TODO [안드로이드 OS 11 및 타겟 30 이상 필수 사항]
/**
* [AndroidManifest.xml 파일 > manifest 부분 > 특정 앱 패키지명 등록 필요]
* <queries>
* <package android:name="com.android.chrome" />
* <package android:name="kr.co.two2k.manager" />
* </queries>
* */
//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 > 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) 설치되지 않은 경우 앱 설치 진행 / 설치된 경우 외부앱 실행 실시
*/
//TODO [메인으로 인텐트 이동]
try {
Intent intent = getPackageManager().getLaunchIntentForPackage(packageNames); //메인으로 그냥 이동
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
overridePendingTransition(0,0);
}
catch (Exception e){
e.printStackTrace();
}
}
else{ //TODO [외부 앱이 설치되어있지 않은 경우]
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();
}
}
}
/* =========================== */
/* =========================== */
[결과 출력]
/* =========================== */
반응형
'Android' 카테고리의 다른 글
Comments