2013-07-13 43 views

Trả lời

15

Bạn sẽ phải mở rộng này cho mỗi cửa hàng bổ sung, nhưng điều này sẽ giúp bạn bắt đầu

if (PackageManager.getInstallerPackageName().equals("com.android.vending") 
{ 
//do google things 
} 
else if (PackageManager.getInstallerPackageName().equals("com.amazon.venezia") 
{ 
//do amazon things 
} 
+4

Tôi KHÔNG thấy điều này đáng tin cậy trong quá khứ. Tôi đã thử nghiệm việc gửi getInstallerPackageName khi cài đặt lên máy chủ web của tôi với một ứng dụng phổ biến được tải lên 6 thị trường và 41% thậm chí không được đặt – jamesc

3

Không trừ khi bạn xây dựng riêng biệt. Nhưng với một kịch bản thiết lập maven/ant tốt bạn có thể tự động dễ dàng quá trình này.

9

tôi phát hiện cài đặt như thế này bên trong MainActivity:

//is installed via amazon, google? 
String installerId = null; 
try { 
    installerId = this.getPackageManager().getInstallerPackageName(this.getPackageName()); 
} catch (Exception e) { 
    //just in case... 
} 

if ("com.amazon.venezia".equals(installerId)) { 
    // amazon 
} else if ("com.android.vending".equals(installerId)) { 
    // google 
} else { 
    // others & unknown ones 
} 

Tôi đã thử nghiệm này trong ứng dụng cuối cùng của tôi và ứng dụng đã gửi ứng dụng trong trò chơi googe, cửa hàng amazon và cửa hàng slideme.org

Cập nhật: xem Đôi khi có tên gói trình cài đặt com.google.android.feedback dường như có liên quan đến cửa hàng google, mặc dù tôi đã thấy trong phân tích google của ứng dụng thử nghiệm của mình rằng com.android.vending là cho đến nay thường xuyên hơn. Vì vậy, nếu bạn muốn làm cho điều này thậm chí chính xác hơn, bạn cũng nên xử lý gói cài đặt này. Cũng lưu ý rằng một số thị trường (như slideme.org) đơn giản dường như không đặt id trình cài đặt gói nào cả.

Xem thêm: Can PackageManager.getInstallerPackageName() tell me that my app was installed from Amazon app store?

Các vấn đề liên quan