개요
이 튜토리얼에서는 자신의 안드로이드 앱에서 다른 앱을 실행하는 방법을 단계별로 알아봅니다. 예제에서는 버튼을 클릭하면 유튜브(YouTube) 앱이 실행되도록 구현합니다. 이 기능은 SNS 공유, 외부 서비스 연동, 결제 앱 호출 등 다양한 상황에서 활용할 수 있습니다.
다른 앱을 실행하는 핵심은 PackageManager의 getLaunchIntentForPackage() 메서드입니다. 이 메서드에 패키지명을 전달하면 해당 앱의 실행 인텐트(Intent)를 얻을 수 있고, 이를 startActivity()로 호출하면 됩니다.
1단계: 새 프로젝트 생성
Android Studio를 열고 File ⇒ New Project 메뉴로 이동한 후, 새 프로젝트 생성에 필요한 모든 세부 정보를 입력하여 프로젝트를 만듭니다. 언어는 Java를 선택하고 Empty Activity 템플릿을 사용하는 것을 권장합니다.
2단계: 레이아웃 파일 작성 (activity_main.xml)
다음 코드를 res/layout/activity_main.xml에 추가합니다.
<?xml version = "1.0" encoding = "utf-8"?> <LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android" xmlns:app = "https://schemas.android.com/apk/res-auto" xmlns:tools = "https://schemas.android.com/tools" android:layout_width = "match_parent" android:gravity = "center" android:layout_height = "match_parent" tools:context = ".MainActivity" android:orientation = "vertical"> <Button android:id = "@+id/applist" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_alignParentTop = "true" android:layout_centerHorizontal = "true" android:layout_marginTop = "27dp" android:text = "Select app list"/> </LinearLayout>
위 코드는 화면 중앙에 버튼 하나를 배치하는 간단한 LinearLayout 구조입니다. 이 버튼을 클릭하면 유튜브 애플리케이션이 실행되도록 만들 것입니다.
3단계: MainActivity.java 작성
다음 코드를 src/MainActivity.java에 추가합니다.
package com.example.myapplication;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.content.res.Configuration;
import android.graphics.PixelFormat;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.List;
import java.util.Locale;
public class MainActivity extends AppCompatActivity {
private WindowManager windowManager;
private ImageView chatHead;
WindowManager.LayoutParams params;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.applist).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent mIntent = getPackageManager().getLaunchIntentForPackage("com.google.android.youtube");
if (mIntent ! = null) {
try {
startActivity(mIntent);
} catch (ActivityNotFoundException err) {
Toast t = Toast.makeText(getApplicationContext(),
"App is not found", Toast.LENGTH_SHORT);
t.show();
}
}
}
});
}
}코드 설명
- getLaunchIntentForPackage(): 대상 앱의 패키지명(
com.google.android.youtube)을 전달하여 해당 앱을 실행하기 위한 인텐트를 가져옵니다. - null 체크: 대상 앱이 기기에 설치되어 있지 않으면 null이 반환되므로, 반드시 null 여부를 확인해야 크래시를 방지할 수 있습니다.
- try-catch 처리:
startActivity()호출 시ActivityNotFoundException이 발생할 수 있으므로 예외 처리를 하고, 앱을 찾을 수 없다는 토스트 메시지를 사용자에게 보여줍니다.
4단계: 앱 실행 및 결과 확인
이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 스마트폰을 컴퓨터에 연결했다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 열고 툴바의 Run 아이콘을 클릭합니다. 옵션 목록에서 자신의 모바일 기기를 선택하면, 앱이 설치되고 아래와 같은 기본 화면이 표시됩니다.

버튼을 클릭하면 유튜브 앱이 정상적으로 실행되는 것을 확인할 수 있습니다.
마무리 및 참고 사항
이처럼 패키지명만 알면 어떤 앱이든 손쉽게 실행할 수 있습니다. 몇 가지 추가로 알아두면 좋은 내용은 다음과 같습니다.
- 기기에 설치된 모든 앱의 패키지 목록은
getPackageManager().getInstalledPackages()또는queryIntentActivities()를 통해 확인할 수 있습니다. - 안드로이드 11(API 30) 이상에서는
<queries>요소를 매니페스트에 선언해야 다른 앱의 패키지 정보를 조회할 수 있습니다. - 특정 URL이나 콘텐츠를 함께 전달하려면 인텐트에 URI나 Extra 데이터를 추가하면 됩니다.