Trong Android, làm cách nào để lấy id của ứng dụng theo chương trình (hoặc theo một số phương pháp khác) và làm cách nào để giao tiếp với các ứng dụng khác bằng id đó?
Câu trả lời:
Nếu bạn đang tìm kiếm giá trị được xác định bởi applicationId
gradle, bạn chỉ cần sử dụng
BuildConfig.APPLICATION_ID
Nếu application id
bạn đang đề cập đến package name
, bạn có thể sử dụng phương pháp Context::getPackageName
( http: // http: //developer.android.com/reference/android/content/Context.html#getPackageName%28%29 ).
Trong trường hợp bạn muốn giao tiếp với ứng dụng khác, có nhiều cách:
Nếu bạn có thể giải thích yêu cầu chính xác của mình, cộng đồng sẽ có thể giúp bạn tốt hơn.
Context.getPackageName()
không trả lại ID ứng dụng và không tên gói (mặc dù chúng thường giống nhau). Tên hơi khó hiểu của phương pháp là kế thừa. Nguồn: developer.android.com/studio/build/application-id
Tôi không chắc bạn đang đề cập đến "id ứng dụng" nào, nhưng để biết số nhận dạng duy nhất của ứng dụng, bạn có thể sử dụng:
phương thức getApplication (). getPackageName () từ hoạt động hiện tại của bạn
getApplicationContext().getPackageName()
?
Tên gói là id ứng dụng Android của bạn.
Chuỗi appId = BuildConfig.APPLICATION_ID
Hoặc là
https://play.google.com/store/apps/details?id=com.whatsapp
Id ứng dụng = com.whatsapp
Bước 1: Mở Cửa hàng Google Play
Bước 2: Mở ứng dụng bất kỳ trong App Store Ví dụ: facebook
Bước 3: Nhấp vào bất kỳ Ứng dụng nào và nhìn vào liên kết Trình duyệt và Ở cuối id = com.facebook.katana & hl = vi sẽ ở đó và đây là Id duy nhất ứng dụng của bạn.
Nếu không, bạn có thể nhận được id của quá trình ứng dụng của bạn chạy trong:
final static int android.os.Process.myPid ()
Trả về số nhận dạng của quá trình này, có thể được sử dụng với killProcess (int) và sendSignal (int, int).
Tôi không chắc bạn cần ID ứng dụng / cài đặt để làm gì, nhưng bạn có thể xem lại các khả năng hiện có trong một bài viết tuyệt vời từ các nhà phát triển Android:
Tóm lại:
UUID.randomUUID()
để tạo id vào lần đầu tiên một ứng dụng chạy sau khi cài đặt và truy xuất đơn giản sau đóTelephonyManager.getDeviceId()
cho số nhận dạng thiết bị thực tếSettings.Secure.ANDROID_ID
trên các thiết bị tương đối hiện đạiCác PackageInfo.sharedUserId
lĩnh vực sẽ hiển thị ID người dùng được gán trong biểu hiện .
Nếu bạn muốn hai ứng dụng có cùng userId để chúng có thể xem dữ liệu của nhau và chạy trong cùng một quy trình, thì hãy gán chúng cùng một userId trong tệp kê khai:
android:sharedUserId="string"
Hai gói có cùng sharedUserId cũng cần phải có cùng chữ ký.
Tôi cũng khuyên bạn nên đọc ở đây để có một hướng đi đúng đắn.
Nếu bạn đang sử dụng hệ thống xây dựng ** Gradle mới thì getPackageName
kỳ lạ sẽ trả về Id ứng dụng chứ không phải tên gói. Vì vậy, câu trả lời của MasterGaurav là đúng nhưng anh ấy không cần bắt đầu bằng ++
Nếu theo id ứng dụng, bạn đang đề cập đến tên gói ...
Xem thêm về sự khác biệt tại đây .
** không quá mới vào thời điểm này
++ Tôi nhận thấy rằng câu trả lời của anh ấy có ý nghĩa hoàn hảo vào năm 2011
Để theo dõi lượt cài đặt, bạn có thể ví dụ: sử dụng UUID làm mã định danh và chỉ cần tạo một cái mới vào lần đầu tiên một ứng dụng chạy sau khi cài đặt. Đây là bản phác thảo của một lớp có tên “Cài đặt” với một phương thức tĩnh là Install.id (Bối cảnh ngữ cảnh). Bạn có thể tưởng tượng việc ghi nhiều dữ liệu cài đặt cụ thể hơn vào tệp INSTALLATION.
public class Installation {
private static String sID = null;
private static final String INSTALLATION = "INSTALLATION";
public synchronized static String id(Context context) {
if (sID == null) {
File installation = new File(context.getFilesDir(), INSTALLATION);
try {
if (!installation.exists())
writeInstallationFile(installation);
sID = readInstallationFile(installation);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return sID;
}
private static String readInstallationFile(File installation) throws IOException {
RandomAccessFile f = new RandomAccessFile(installation, "r");
byte[] bytes = new byte[(int) f.length()];
f.readFully(bytes);
f.close();
return new String(bytes);
}
private static void writeInstallationFile(File installation) throws IOException {
FileOutputStream out = new FileOutputStream(installation);
String id = UUID.randomUUID().toString();
out.write(id.getBytes());
out.close();
}
}
Yon có thể xem thêm tại https://github.com/MShoaibAkram/Android-Unique-Application-ID