Notice
Recent Posts
Recent Comments
Link
투케이2K
240. (AndroidStudio/android/java) 외부 앱 메인 이동 시 intent 인텐트 데이터 전송 실시 본문
Android
240. (AndroidStudio/android/java) 외부 앱 메인 이동 시 intent 인텐트 데이터 전송 실시
투케이2K 2021. 12. 22. 22:02[개발 환경 설정]
개발 툴 : 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 [인풋으로 들어온 데이터가 널인지 판단 실시]
if (packageNames != null && packageNames.length()>0 && !packageNames.equals("") && !packageNames.contains("null"))){
Toast.makeText(getApplication(), "해당 앱으로 이동합니다.", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(getApplication(), "애플리케이션 정보를 다시 확인해주세요.", Toast.LENGTH_SHORT).show();
return; // [메소드 종료 실시]
}
//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.i("---","---");
Log.d("//===========//","================================================");
Log.i("","\n"+"[ParentActivity > goAppRun() 메소드 : 앱 실행 및 마켓 이동 실시]");
Log.i("","\n"+"[packageNames : "+String.valueOf(packageNames)+"]");
Log.d("//===========//","================================================");
Log.i("---","---");
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) 설치되지 않은 경우 앱 설치 진행 / 설치된 경우 외부앱 실행 실시
*/
try {
// TODO [외부앱 메인으로 이동 실시]
Intent intent = getPackageManager().getLaunchIntentForPackage(packageNames);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
intent.putExtra("pkg", "com.twok.app"); // [데이터 전송]
intent.putExtra("user_id", "twok"); // [데이터 전송]
startActivity(intent);
overridePendingTransition(0,0);
}
catch (Exception e){
e.printStackTrace();
}
}
else{ //TODO [외부 앱이 설치되어있지 않은 경우]
Toast.makeText(getApplication(), "해당 앱을 받기 위해 마켓으로 이동합니다.", Toast.LENGTH_SHORT).show();
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