![](/img/trans.png)
[英]How do I know if the app has been downloaded from Google Play once
[英]How to know if an app has been downloaded from Google Play or Amazon?
有沒有辦法知道某個應用程序是從Amazon App Store還是從Google Play商店下載的? 當然,我的意思是在應用程序內部。
我已經為這兩個站點部署了一個應用程序,而我更願意知道客戶在應用程序中的下載位置。 我知道,我可以為每個服務部署不同的應用程序,但這增加了一些維護工作,如果有一些方法可以使用相同的包在應用程序中使用條件來解決它。
在代碼中:
final PackageManager packageManager = getPackageManager();
try {
final ApplicationInfo applicationInfo = packageManager.getApplicationInfo(getPackageName(), 0);
if ("com.android.vending".equals(packageManager.getInstallerPackageName(applicationInfo.packageName))) {
// App was installed by Play Store
}
} catch (final NameNotFoundException e) {
e.printStackTrace();
}
“com.android.vending”告訴你它來自Google Play商店。 我不確定亞馬遜Appstore是什么,但使用上面的代碼測試應該很容易。
通過亞行:
adb shell pm dump "PACKAGE_NAME" | grep "vending"
例:
adb shell pm dump "com.android.chrome" | grep "vending"
installerPackageName=com.android.vending
雖然在大多數情況下,您可以通過包含類似於此的檢查來獲取商店名稱:
final PackageManager packageManager = getPackageManager();
try {
final ApplicationInfo applicationInfo = packageManager.getApplicationInfo(getPackageName(), 0);
if ("com.android.vending".equals(packageManager.getInstallerPackageName(applicationInfo.packageName))) {
// App was installed by Play Store
} else if ("com.amazon.venezia".equals(packageManager.getInstallerPackageName(applicationInfo.packageName))) {
// App was installed by Amazon Appstore
} else {
// App was installed from somewhere else
}
} catch (final NameNotFoundException e) {
e.printStackTrace();
}
“com.android.vending”是Google Play商店和
“com.amazon.venezia”是亞馬遜Appstore,和
當它被側載時為null
然而,結果可能是不可靠的,例如在beta測試期間,商店可能不會設置此值,此外,可以側載您的應用程序,指定可以解釋為商店名稱的安裝程序包名稱:
adb install -i <INSTALLER_PACKAGE_NAME> <PATH_TO_YOUR_APK>
您可能需要考慮為不同的商店設置不同的應用程序ID,例如Google的“com.example.yourapp”和亞馬遜的“com.example.yourapp.amazon” - 您可以在Gradle腳本中輕松設置這些ID。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.