2011-02-10 11 views
68

Chcę wiedzieć, jak przeanalizować plik AndroidManifest.xml, aby uzyskać numer wersji aplikacji za pośrednictwem kodu. android: versionNamePobierz android: versionName manifest element w kodzie

+1

Możesz uzyskać "versionName" swojej aplikacji za pomocą 'BuildConfig.VERSION_NAME ', jeśli używasz Gradle. Zobacz odpowiedź tutaj: http://stackoverflow.com/a/28352130/293280 –

Odpowiedz

144

Nie trzeba analizować plik AndroidManifest.xml do tego.

Formularz ten można uzyskać za pomocą:

try 
{ 
    String app_ver = this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName; 
} 
catch (NameNotFoundException e) 
{ 
    Log.e(tag, e.getMessage()); 
} 

Zastosowanie tej metody onCreate() wewnątrz.

+0

Muszę porównać moją aplikację android: versionName z aplikacją w plikach do pobrania. moja aplikacja nie jest na rynku Android. muszę porównać parametr versionName w telefonie komórkowym z tym, który jest dostępny w witrynie, aby obatywać nową wersję i wyświetlać alert, aby ją zaktualizować. Jak można uzyskać nowy numer wersji aplikacji? na stronie internetowej – jennifer

+0

@jebbifer: wystarczy utworzyć żądanie "Http Get" ze swojej aplikacji i wysłać tę wartość w parametrach tego żądania. Na twoim serwerze musisz obsłużyć to żądanie i porównać wartości wersji aplikacji. Jeśli jest większa niż aplikacja klienta, to w odpowiedzi wyślij mu link do pobrania nowej wersji tej aplikacji. –

+0

Bardzo ładne ++ –

35

Jeśli jest to przydatne dla kogokolwiek innego, można również uzyskać dostęp do zasobów @string z AndroidManifest.xml, tak jak z innych plików xml.

Tak na przykład w AndroidManifest.xml:

android:versionName="@string/app_versionName" 

iw kodzie:

string versionName = getResources().getString(R.string.app_versionName); 

W ten sposób nie trzeba (irytujące, imo) try/catch oświadczenie. Nie jestem pewien, czy jest to zatwierdzony sposób robienia rzeczy, ale ma to dla mnie sens.

+0

Przyjemne rozwiązanie :) – Janusz

+0

możemy uzyskać oczywistą treść. –

+1

fajne rozwiązanie! Zamiast edytować ciąg bezpośrednio z manifestu, użyj wartości ciągu i edytuj ją, a twój kod się nie zmieni! ja lubię! +2: P –

2

tej pory użyłem poniższy fragment kodu z this artykułu i pomyślnie dostał kod wersji i wersję Nazwa z AndroidManifest.xml

/* Get android:versionName */ 
String versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName; 

/* Get android:versionCode */ 
int versionCode = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode; 
+0

Proszę rozwinąć odpowiedź, ponieważ odpowiedzi dotyczące wyłącznie linków nie są uznawane za dobre w przypadku SO. –

8

Jeśli używasz Android Studio, nazwa wersji jest dostępny w klasie BuildConfig. Ta klasa wygenerowana w czasie kompilacji:

String versionName = BuildConfig.VERSION_NAME; 

To najczystszy sposób na pobranie nazwy wersji.

+1

Powinna być zaakceptowaną odpowiedzią! Dziękuję Ci bardzo – Phil

Powiązane problemy