Holen Sie sich android: versionName Manifest Element im Code


Antworten:


144

AndroidManifest.xmlDazu muss die Datei nicht analysiert werden.

Sie können dies erhalten, indem Sie:

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

Verwenden Sie dies in Ihrer onCreate()Methode.


Ich muss meine Anwendung android: versionName mit der App in den Downloads vergleichen. Meine App ist nicht im Android-Markt. Ich muss den Versionsnamen in meinem Handy mit dem auf der Website verfügbaren vergleichen, um die neue Version zu erhalten und eine Warnung zum Aktualisieren anzuzeigen. Wie ist es möglich, die neue Versionsnummer der App zu erhalten? auf der Website
Jennifer

@jebbifer: Erstellen Sie einfach eine Http GetAnfrage aus Ihrer Anwendung und senden Sie diesen Wert in den Parametern dieser Anfrage. Auf Ihrem Server müssen Sie diese Anforderung bearbeiten und die Werte der Anwendungsversion vergleichen. Wenn größer als die Client-App, senden Sie ihm als Antwort einen Link zum Herunterladen einer neuen Version dieser Anwendung.
Vikas Patidar

35

Falls dies für andere hilfreich ist, können Sie auch @stringüber AndroidManifest.xml auf Ressourcen zugreifen, wie dies auch aus anderen XML-Dateien möglich ist.

So zum Beispiel in AndroidManifest.xml:

android:versionName="@string/app_versionName"

und im Code:

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

Auf diese Weise benötigen Sie nicht die (nervige, imo) try / catch-Anweisung. Ich bin mir nicht sicher, ob dies eine anerkannte Vorgehensweise ist, aber es macht für mich Sinn.


1
coole Lösung! Anstatt eine Zeichenfolge direkt aus dem Manifest zu bearbeiten, verwenden Sie einen Zeichenfolgenwert und bearbeiten Sie ihn. Ihr Code ändert sich dann nicht! ich mag ! +2: P
S.Thiongane

4
Beachten Sie diese Flusen Warnmeldung : android: version keine Ressourcen - URL sein kann, muss es eine Zeichenkette sein
S.Thiongane

Schande. Diese Flusennachricht muss kürzlich aufgetaucht sein. Ich kann mich nicht erinnern, es wieder gesehen zu haben, als ich daran gearbeitet habe.
ForeverWintr

9

Wenn Sie Android Studio verwenden, ist der Versionsname in der Klasse BuildConfig verfügbar . Diese Klasse wird zur Kompilierungszeit generiert:

String versionName = BuildConfig.VERSION_NAME;

Dies ist der sauberste Weg, um den Versionsnamen abzurufen.


2

Bisher habe ich das folgende Code-Snippet aus diesem Artikel verwendet und den Versionscode und den Versionsnamen erfolgreich von erhaltenAndroidManifest.xml

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

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

Bitte erweitern Sie Ihre Antwort, da Nur-Link-Antworten auf SO nicht als gut angesehen werden.
Mike Szyndel
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.