투케이2K

48. (AndroidStudio/android/java) app 앱이 설치되어있으면 intent 실행, 아니면 구글플레이스토어 마켓이동 실시 메소드 본문

Android

48. (AndroidStudio/android/java) app 앱이 설치되어있으면 intent 실행, 아니면 구글플레이스토어 마켓이동 실시 메소드

투케이2K 2021. 2. 13. 15:53

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : 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"+"[A_Main > 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();
				String Tittle = "외부 앱 설치 여부 확인";
				String Message = "외부 앱이 설치된것을 다시 확인해 주시기 바랍니다.";
				String buttonNo = "";
				String buttonYes = "확인";
				new AlertDialog.Builder(A_Main.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 {
									//구글 플레이스토어 앱에서 이동한다.
									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();
			}
		}
	}

/* =========================== */

반응형
Comments