본문 바로가기
안드로이드 자바

[Java][Android] PackageManager 사용해서 앱 정보 가져오기

by teamnova 2025. 7. 7.
728x90

안드로이드 앱을 개발하다 보면 현재 앱 자체의 정보나 기기에 설치된 다른 앱들의 정보를 프로그램적으로 알아야 할 때가 있습니다. 예를 들어, 앱 내에 "앱 정보" 화면을 구현하여 버전 번호를 보여주거나, 특정 앱이 설치되어 있는지 확인하여 기능을 활성화/비활성화하고 싶을 때 유용하죠.

 

이럴 때 안드로이드에서 제공하는 PackageManager와 ApplicationInfo 클래스를 활용할 수 있습니다.

이번 포스팅에서는 PackageManager와 ApplicationInfo를 사용하여 현재 앱의 이름, 패키지 이름, 버전 이름, 아이콘을 가져와 TextView와 ImageView에 표시하는 방법을 MainActivity.java와 activity_main.xml 두 파일만으로 간단하게 구현해 보겠습니다.

 

전체 코드입니다

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  android:gravity="center_horizontal"
  android:padding="20dp"
  tools:context=".MainActivity">

  <ImageView
    android:id="@+id/app_icon_image_view"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_marginBottom="20dp"
    android:src="@mipmap/ic_launcher"
    android:contentDescription="App Icon" />

  <TextView
    android:id="@+id/app_name_text_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="24sp"
    android:textStyle="bold"
    android:textColor="@android:color/black"
    android:layout_marginBottom="10dp"
    tools:text="앱 이름"/>

  <TextView
    android:id="@+id/package_name_text_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="16sp"
    android:layout_marginBottom="5dp"
    tools:text="패키지 이름: com.example.myapp"/>

  <TextView
    android:id="@+id/version_name_text_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="16sp"
    android:layout_marginBottom="5dp"
    tools:text="버전 이름: 1.0.0"/>

</LinearLayout>

 

 

MainActivity.java

public class MainActivity extends AppCompatActivity {

  private ImageView appIconImageView;
  private TextView appNameTextView;
  private TextView packageNameTextView;
  private TextView versionNameTextView;


  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // 뷰 바인딩
    appIconImageView = findViewById(R.id.app_icon_image_view);
    appNameTextView = findViewById(R.id.app_name_text_view);
    packageNameTextView = findViewById(R.id.package_name_text_view);
    versionNameTextView = findViewById(R.id.version_name_text_view);

    // PackageManager 인스턴스 가져오기
    PackageManager packageManager = getPackageManager();
    // 현재 앱의 패키지 이름 가져오기
    String currentPackageName = getPackageName();

    try {
      // 1. ApplicationInfo를 사용하여 앱 이름과 아이콘 가져오기
      ApplicationInfo appInfo = packageManager.getApplicationInfo(currentPackageName, 0);
      String appName = (String) packageManager.getApplicationLabel(appInfo);
      Drawable appIcon = packageManager.getApplicationIcon(appInfo);

      appNameTextView.setText(appName);
      appIconImageView.setImageDrawable(appIcon);

      // 2. PackageInfo를 사용하여 버전 이름가져오기
      PackageInfo packageInfo = packageManager.getPackageInfo(currentPackageName, 0);

      String versionName = packageInfo.versionName;

      packageNameTextView.setText("패키지 이름: " + currentPackageName);
      versionNameTextView.setText("버전 이름: " + versionName);

    } catch (PackageManager.NameNotFoundException e) {
      e.printStackTrace();
      appNameTextView.setText("앱 정보를 가져올 수 없습니다.");
    }
  }
}

 

 

 

실행 결과입니다.