본문 바로가기
MOBILE/Android

안드로이드 앱 안에서 외부 앱 열기

by 지구 2018. 8. 8.

android 구현하다 보니, 외부 어플도 열 수 있게끔 하고 싶어서 구현함!

아, 참고로 해당 기능을 구현하려면 그 어플의 패키지명을 알아야 하는데 나는 아래 사이트에서 검색했다 :)

https://www.apkmonk.com/app/com.dki.spb_android/


* 사용방법 * ( '따릉이' 로 테스트 )

1. 우선 열고자 하는 어플이 핸드폰에 깔려있는지 확인하는 메소드, 있으면 true 없으면 false 를 반환함

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//어플이 깔려있는지 체크
    public boolean getPackageList(String packageName) {
        boolean isExist = false;
 
        PackageManager pkgMgr = getContext().getPackageManager();
        List<ResolveInfo> mApps;
        Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        mApps = pkgMgr.queryIntentActivities(mainIntent, 0);
 
        try {
            for (int i = 0; i < mApps.size(); i++) {
                if(mApps.get(i).activityInfo.packageName.startsWith(packageName)){
                    isExist = true;
                    break;
                }
            }
        }
        catch (Exception e) {
            isExist = false;
        }
        return isExist;
}
cs

2. 구현하고자 하는 Activity 또는 Fragment 에서 아래와 같이 선언해주면 끝!

1
2
3
4
5
6
7
8
9
10
11
12
//따릉이 연결
boolean isInstalled = getPackageList("com.dki.spb_android");
if(isInstalled){
    Toast.makeText(this.getActivity(), "어플이 설치되어있지 않아 마켓으로 이동합니다.", Toast.LENGTH_SHORT).show();
    Intent intent = getContext().getPackageManager().getLaunchIntentForPackage("com.dki.spb_android");
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}else{
    String url = "market://details?id=" + "com.dki.spb_android";
    Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    startActivity(i);
}
cs



참고 : https://www.fun25.co.kr/blog/android-execute-3rdparty-app/?category=003

반응형

댓글