Tôi biết đây có thể là một ảnh dài, nhưng có cách nào để phát hiện có lập trình xem ứng dụng có được lưu trữ trên cửa hàng ứng dụng Amazon vs trên Google Play không? Tôi muốn liên kết đến kho ứng dụng mà ứng dụng được tải xuống và tôi không muốn có hai APK khác nhau chỉ với sự khác biệt này nếu có thể tránh được.Phát hiện xem ứng dụng Android đã được tải xuống từ Google Play hay Amazon hay không
Trả lời
Tính đến chỉ thời gian gần đây, Amazon Appstore trả về giá trị lành mạnh cho PackageManager.getInstallerPackageName()
PackageManager pm = context.getPackageManager();
String installerPackageName = pm.getInstallerPackageName(context.getPackageName());
if ("com.android.vending".equals(installerPackageName)) {
//do google things
} else if ("com.amazon.venezia".equals(installerPackageName)) {
//do amazon things
}
Xem ở đây: https://forums.developer.amazon.com/forums/thread.jspa?threadID=680
Ví dụ đối với tỷ lệ ứng dụng này liên kết:
Google Play-
thị trường: // details? Id = PACKAGANAME
Amazon Store
hoặc
AMZN: // apps/và p = com.amazon.mp3
Cảm ơn, tôi sẽ dùng thử! –
Xin chào @AlfieHanssen. Tôi vẫn cần xác minh điều này. –
Lưu ý rằng getInstallerPackageName() có thể trả về null nếu ứng dụng được cài đặt bằng ADB –
Cách dễ nhất là sử dụng các mã hoặc tên phiên bản khác nhau giữa Amazon và Google Play. Sau đó, bạn có thể sử dụng PackageManager.getPackageInfo để truy xuất các giá trị đó và chọn liên kết cửa hàng ứng dụng phù hợp từ đó.
Ví dụ: hậu tố tất cả tên phiên bản Amazon của bạn bằng '.65' tức là, 1.0.65. Sau đó sử dụng
public boolean isAmazon(Context context) {
String versionName = "";
try {
versionName = context.getPackageManager().getPackageInfo(
getPackageName(), 0).versionName;
} catch (NameNotFoundException e) {
// Can't find itself...
}
return versionName.endsWith(".65");
}
Cảm ơn. Đây là một cách để làm điều đó, nhưng tiếc là nó là một thay đổi biên dịch thời gian mà không giải quyết được trường hợp cụ thể. Tôi có thể dễ dàng thêm một thẻ meta-data vào tệp kê khai của tôi, có lẽ là sạch hơn về lâu dài, vì các phiên bản có thể vẫn giống hệt nhau cho cả hai gói. –
Tốt hơn nên sử dụng PackageName thay vì VersionName bởi vì nó là lạ khi thêm một chữ cái vào một phiên bản (dễ dàng hơn để thay đổi tên gói). – Idan
Ngoài ra Amazon không chấp nhận tên phiên bản khác với x.x.x.x.x, trong đó x chỉ là số nguyên. Đọc nó ở đây: [Link] (https://developer.amazon.com/public/support/submitting-your-app/tech-docs/submitting-your-app) – ARLabs
các ứng dụng được tải từ amazon nhận được cập nhật của chúng từ đó ...........? –