2013-07-13 128 views
9

我在Google Play,亞馬遜,三星應用程序中有應用程序,並計劃上傳到其他商店。 我不想爲每個商店編譯單獨的版本。 如果同一個應用程序提交給不同的商店,是否有辦法檢測商店安裝的應用程序?android應用程序如何檢測它安裝的商店?

回答

15

你必須擴大這項每增加一個店,但這應該讓你開始

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

我還沒有發現這是過去可靠。我嘗試將安裝時的getInstallerPackageName發送到我的網絡服務器,並將流行的應用上傳到6個市場,41%甚至沒有設置 – jamesc

3

除非你製作獨立的版本。但是,通過一個好的maven setup/ant腳本,你可以輕鬆地自動化這個過程。

9

我發現安裝這樣在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 
} 

我已經測試了這個我的最後一個應用程序,它通過應用程序提交googe play,amazon store和slideme.org商店

更新:look像有時有安裝程序包名稱com.google.android.feedback這似乎與谷歌商店有關,雖然我在我的測試應用程序的谷歌分析中看到,com.android.vending是迄今爲止更頻繁。所以如果你想更加精確的話,你也應該處理這個安裝包。 另請注意,一些市場(如slideme.org)根本就沒有設置包安裝程序標識。

參見:Can PackageManager.getInstallerPackageName() tell me that my app was installed from Amazon app store?

相關問題