Wiem, że to prawdopodobnie długi czas, ale czy istnieje sposób, aby wykryć programowo, czy aplikacja była hostowana w sklepie z aplikacjami Amazon kontra w Google Play? Chciałbym połączyć się ze sklepem z aplikacjami, z którego pobrano aplikację, i wolałbym nie mieć dwóch różnych plików APK z tą różnicą, jeśli można tego uniknąć.Wykryj, czy aplikacja na Androida została pobrana z Google Play kontra Amazon kontra Inna
Odpowiedz
As od niedawna, Amazon Appstore zwraca wartości rozsądnych dla PackageManager.getInstallerPackageName()
PackageManager pm = context.getPackageManager();
String installerPackageName = pm.getInstallerPackageName(context.getPackageName());
if ("com.android.vending".equals(installerPackageName)) {
//do google things
} else if ("com.amazon.venezia".equals(installerPackageName)) {
//do amazon things
}
Zobacz tutaj: https://forums.developer.amazon.com/forums/thread.jspa?threadID=680
Przykłady Oceń ten app linki:
Google Play -
rynkowa: // szczegóły id = PACKAGANAME
Amazon Store
lub
AMZN: // apps/i roid? p = com.amazon.mp3
Dzięki, dam tego spróbować! –
Witam @AlfieHanssen. Nadal muszę to zweryfikować. –
Należy zauważyć, że funkcja getInstallerPackageName() może zwrócić wartość null, jeśli aplikacja została zainstalowana przy użyciu ADB –
Najprostszym sposobem jest użycie różnych kodów wersji lub nazw między Amazon i Google Play. Następnie możesz użyć PackageManager.getPackageInfo, aby pobrać te wartości i wybrać odpowiedni link do sklepu z aplikacjami.
Przykład: sufiks wszystkich nazw wersji Amazon z ".65", czyli 1.0.65. Następnie użyj
public boolean isAmazon(Context context) {
String versionName = "";
try {
versionName = context.getPackageManager().getPackageInfo(
getPackageName(), 0).versionName;
} catch (NameNotFoundException e) {
// Can't find itself...
}
return versionName.endsWith(".65");
}
Dzięki. Jest to jeden sposób, aby to zrobić, ale niestety jest to zmiana w czasie kompilacji, która nie rozwiązuje konkretnego przypadku. Równie łatwo mógłbym dodać znacznik meta-danych do mojego manifestu, który na dłuższą metę jest prawdopodobnie czystszy, ponieważ wersje mogą pozostać identyczne dla obu pakietów. –
Lepiej używać nazwy PackageName zamiast VersionName, ponieważ dodanie litery do wersji jest dziwne (łatwiej zmienić nazwę pakietu). – Idan
Również Amazon nie akceptuje nazwy wersji innej niż x.x.x.x.x gdzie x to tylko liczby całkowite. Przeczytaj go tutaj: [LINK] (https://developer.amazon.com/public/support/submitting-your-app/tech-docs/submitting-your-app) – ARLabs
czy aplikacje załadowane z Amazon pobierają tam swoje aktualizacje ...........? –