Ich möchte wissen, wie die Datei AndroidManifest.xml analysiert wird, um die Anwendungsversionsnummer durch Code zu erhalten. android: versionName
Antworten:
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.
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.
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;
versionName
mit erhalten,BuildConfig.VERSION_NAME
wenn Sie Gradle verwenden. Die Antwort finden Sie hier: stackoverflow.com/a/28352130/293280