簡體   English   中英

如何知道應用是否已從Google Play或亞馬遜下載?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM