외부 앱을 호출하는 방법은 크게 두 가지가 있다.
패키지명과 메인액티비티를 알고있는경우,
패키지명만 알고있는 경우.
1. 외부 앱의 패키지명과 메인액티비를 알고있는경우
ComponentName compName = new ComponentName(
"패키지명",
"액티비티명");
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.setComponent(compName);
startActivity(intent);
2. 외부 앱의 패키지명만 알고있는 경우
Intent intent = getPackageManager().getLaunchIntentForPackage("패키지명");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
부가적으로,
외부앱이 설치되어 있는지 확인 하는 방법
public boolean getPackageList() {
boolean isExist = false;
PackageManager pm = getPackageManager();
List<ResolveInfo> apps;
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
apps = pm.queryIntentActivities(intent , 0);
try {
for (int i = 0; i < apps.size(); i++) {
if(apps.get(i).activityInfo.packageName.startsWith("패키지명")){
isExist = true;
break;
}
}
}
catch (Exception e) {
isExist = false;
}
return isExist;
}
설치되어있지 않다면 설치를 유도하는 방법
String url = "market://details?id=" + "패키지명";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent );
안드로이드 앱을 개발하다보면 참으로 자유롭다는 생각이 든다.
비록 구현이 어려울지언정 불가능한 것은 없다.
'Android 개발이야기' 카테고리의 다른 글
블루투스 저전력 캐시관련 BLE Cache(Bluetooth Low Energy) (1) | 2018.07.22 |
---|