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: Trongbuild.gradle,applicationIdquyế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.