2011-02-10 11 views
68

Quiero saber cómo analizar el archivo AndroidManifest.xml para obtener el número de versión de la aplicación a través del código. androide: nombre de la versiónObtiene el elemento del manifiesto android: versionName en el código

+1

Puede obtener 'versionName' de su aplicación con' BuildConfig.VERSION_NAME' si está usando Gradle. Vea la respuesta aquí: http://stackoverflow.com/a/28352130/293280 –

Respuesta

144

No hay necesidad de analizar el archivo AndroidManifest.xml para esto.

usted puede conseguir esto usando:

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

Utilice esta dentro de su método onCreate().

+0

necesito comparar mi aplicación android: versionName con la aplicación en las descargas. mi aplicación no está en el mercado de Android ... necesito comparar la versionName en mi móvil con la disponible en el sitio para obtener la nueva versión y mostrar una alerta para actualizarla ... ¿cómo es posible obtener el nuevo número de versión de la aplicación? en el sitio web – jennifer

+0

@jebbifer: Simplemente cree una solicitud 'Http Get' desde su aplicación y envíe este valor en los parámetros de esta solicitud. Y en su servidor necesita manejar esa solicitud y comparar los valores de la versión de la aplicación. Si es mayor que la aplicación del cliente, en respuesta, envíele un enlace para descargar la nueva versión de esa aplicación. –

+0

Muy niiiice ++ –

35

En caso de que esto sea útil para cualquier otra persona, también puede acceder a los recursos @string de AndroidManifest.xml como lo puede hacer con otros archivos xml.

Así, por ejemplo, en AndroidManifest.xml:

android:versionName="@string/app_versionName" 

y en el código:

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

De esta manera usted no necesita el (molesto, OMI) tratar declaración/catch. No estoy seguro si esta es una forma aprobada de hacer las cosas, pero tiene sentido para mí.

+0

Buena solución :) – Janusz

+0

podemos obtener el contenido manifiesto. –

+1

solución genial! En lugar de editar cadena directamente desde el manifiesto, use un valor de cadena y edítelo; ¡entonces su código no cambiará! me gusta! +2: P –

2

Hasta ahora, he utilizado el siguiente fragmento de código del artículo y this éxito tiene el código de la versión y nombre de la versión de AndroidManifest.xml

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

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

Amplíe su respuesta, ya que las respuestas de solo enlace no se consideran buenas en SO. –

8

Si está utilizando el estudio Android, el nombre de la versión está disponible en la clase BuildConfig. Esta clase se genera en tiempo de compilación:

String versionName = BuildConfig.VERSION_NAME; 

Esta es la manera más limpia de recuperar el nombre de la versión.

+1

¡Debería ser la respuesta aceptada! Muchas gracias – Phil

Cuestiones relacionadas