Wie kann ich wissen, ob eine App von Google Play oder Amazon heruntergeladen wurde?

Gibt es eine Möglichkeit zu wissen, ob eine Anwendung von Amazon oder Google Play heruntergeladen wurde? Ich meinte natürlich in der App selbst.

Ich habe eine App auf beide Seiten implementiert und ich mag es gern, von wo aus der Kunde es in der Anwendung heruntergeladen hat. Ich weiß, ich kann verschiedene Anwendungen für jeden Dienst zu implementieren, aber diese Anzeigen einige Wartungsarbeiten, die vermieden werden könnten, wenn es einige Art und Weise zu lösen, nur mit einer Bedingung innerhalb der App mit dem gleichen Paket.

  • use-feature übergreifende use-permission?
  • Google Play, Screenshots für Tablets und Bildbestellung
  • MGoogleApiClient kann in einer anderen Aktivität nicht erreicht werden
  • Wie kann man die Android-Version und die Code-Versionsnummer in Android Studio ändern?
  • Android Market In-App-Kauf: Wie bekomme ich die Währung, die ein Benutzer bezahlen wird?
  • Wie startet man die Google Play-Intent in "Give Feedback" -Modus auf Android?
  • In-App-Abrechnung android return Authentifizierung ist erforderlich, wenn Sie versuchen, das Produkt zu abonnieren
  • Wie kann ich überprüfen, dass Google-Spiel in-App-Kauf in PHP?
  • 2 Solutions collect form web for “Wie kann ich wissen, ob eine App von Google Play oder Amazon heruntergeladen wurde?”

    In Code:

     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" sagt dir, dass es aus dem Google Play Store kam. Ich bin mir nicht sicher, was der Amazon Appstore ist, aber es sollte einfach sein, mit dem obigen Code zu testen.

    Über ADB:

     adb shell pm dump "PACKAGE_NAME" | grep "vending" 

    Beispiel:

     adb shell pm dump "com.android.chrome" | grep "vending" installerPackageName=com.android.vending 

    Während in den meisten Fällen können Sie den Laden Namen, indem Sie einen ähnlichen Check:

     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" ist Google Play Store und
    "Com.amazon.venezia" ist der Amazonas-Appstore und
    Null wenn es sideloaded war

    Die Ergebnisse könnten jedoch unzuverlässig sein, wie zum Beispiel bei Beta-Tests ein Laden nicht diesen Wert setzen kann, und außerdem ist es möglich, Ihre App anzugeben, die den Paketnamen des Installateurs angibt, der als Store-Name interpretiert werden könnte:

     adb install -i <INSTALLER_PACKAGE_NAME> <PATH_TO_YOUR_APK> 

    Vielleicht möchten Sie mit anderen Paketnamen für verschiedene Läden, zum Beispiel "com.example.yourapp" für Google und "com.example.yourapp.amazon" für Amazon – Sie können ganz einfach die in Ihrem Gradle-Skript.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.