티스토리 뷰

activity_main.xml

<Button
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_marginTop="15dp"
    android:layout_marginBottom="15dp"
    android:background="@drawable/ic_kakao"
    android:onClick="onKakao" />

카카오톡 모양의 버튼을 main xml 파일에 넣고,

버튼을 눌렀을 때 카카오톡 앱을 열게 하기 위해 onClick 함수를 걸어준다.

 

 

MainActivity.java

    public void onKakao(View v) {
        if(getPackageList()) {
            Intent intent = getPackageManager().getLaunchIntentForPackage("com.kakao.talk");
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
        }else{
            String url = "market://details?id="+"com.kakao.talk";
            Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(i);
        }
    }

    public boolean getPackageList() {
        boolean isExist = false;

        PackageManager pkgMgr = 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("com.kakao.talk")){
                    isExist = true;
                    break;
                }
            }
        }
        catch (Exception e){
            isExist = false;
        }
        return isExist;
    }

메인 함수를 이렇게 짜면 되는데,

 

getPackageList( ) 함수는 해당 디바이스에 카카오톡 앱이 설치되었는지를 확인하여,

설치 되어있으면 true를, 설치 되어있지 않으면 false를 리턴한다.

 

아까 xml에서 onClick 함수로 걸어준 onKakao에서는 getPackageList( )의 결과값을 보고,

true를 전달 받으면 카카오톡 "앱"을 실행시켜주고,

false를 전달 받으면 앱스토어에서 카카오톡 설치 버튼을 누르는 화면의 지점으로 건너가게 해준다.

댓글