Ich möchte wissen, wie die Datei AndroidManifest.xml analysiert wird, um die Anwendungsversionsnummer durch Code zu erhalten. android: versionName
android
android-manifest
Jennifer
quelle
quelle
versionName
mit erhalten,BuildConfig.VERSION_NAME
wenn Sie Gradle verwenden. Die Antwort finden Sie hier: stackoverflow.com/a/28352130/293280Antworten:
AndroidManifest.xml
Dazu 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.quelle
Http Get
Anfrage 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.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.
quelle
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.
quelle
Bisher habe ich das folgende Code-Snippet aus diesem Artikel verwendet und den Versionscode und den Versionsnamen erfolgreich von erhalten
AndroidManifest.xml
/* Get android:versionName */ String versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName; /* Get android:versionCode */ int versionCode = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode;
quelle