Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách in tên package hiện tại của ứng dụng Android

Giới thiệu

Lấy tên package (package name) của ứng dụng đang chạy bằng phương thức getPackageName() của Context. Package name là định danh duy nhất trên thiết bị và Google Play (ví dụ: com.example.myapp).

Triển khai

Bước 1: Tạo dự án

Android Studio → New Project → Empty Activity.

Bước 2: 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"
    android:padding="16dp"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/tv_package"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:textStyle="bold"
        tools:text="Package name sẽ hiển thị ở đây" />

</LinearLayout>

Bước 3: MainActivity.java

package com.example.myapplication;

import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    TextView tvPackage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        tvPackage = findViewById(R.id.tv_package);
        
        // Lấy package name
        String packageName = getPackageName();
        tvPackage.setText("Package Name: " + packageName);
        
        // Thông tin bổ sung hữu ích
        String versionName = BuildConfig.VERSION_NAME;
        int versionCode = BuildConfig.VERSION_CODE;
        tvPackage.append("\nVersion: " + versionName + " (" + versionCode + ")");
    }
}

Ứng dụng thực tế

  • Deep linking: intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;end
  • Share intent: Chia sẻ link đến app trên Play Store: market://details?id=PACKAGE_NAME
  • Kiểm tra app đã cài: PackageManager.getPackageInfo(packageName, 0)
  • Analytics/Logging: Phân biệt build variant (debug/release/production)
  • FileProvider authority: ${applicationId}.fileprovider

Lấy Package Name ở nơi khác

// Trong Service, BroadcastReceiver, ContentProvider (có Context)
String pkg = context.getPackageName();

// Trong class không có Context (cần truyền Context)
public static String getPackageName(Context context) {
    return context.getPackageName();
}

// Từ PackageManager (cần package name hoặc UID)
PackageManager pm = context.getPackageManager();
String pkg = pm.getPackagesForUid(android.os.Process.myUid())[0];

BuildConfig vs getPackageName()

  • BuildConfig.APPLICATION_ID: ID tại build time (có thể khác package name nếu dùng applicationIdSuffix)
  • getPackageName(): Package name runtime (luôn chính xác cho context hiện tại)
Mẹo: Trong build.gradle, applicationId quyết định package name trên thiết bị/Play Store. Package name trong code Java/Kotlin (thư mục src/main/java/com/example/) có thể khác.