Tengo una función de informe automático de errores en mi aplicación que incluye información útil para la depuración.¿Cómo saber quién es el proveedor de ROM?
Una cosa que me gustaría incluir es el proveedor de ROM. En particular, me gustaría saber si el usuario está ejecutando una ROM personalizada y cuál, preferiblemente incluso con el número de versión.
¿Alguna idea de cómo recuperar esta información mediante programación?
--- Tomado del Quintin (véase más adelante)
public static String getReadableModVersion() {
String modVer = getSystemProperty(Constants.SYS_PROP_MOD_VERSION);
return (modVer == null || modVer.length() == 0 ? "Unknown" : modVer);
}
medio de las cuales la constante es la siguiente:
public static final String SYS_PROP_MOD_VERSION = "ro.modversion";
Y aquí es el getSystemProperty();
public static String getSystemProperty(String propName){
String line;
BufferedReader input = null;
try
{
Process p = Runtime.getRuntime().exec("getprop " + propName);
input = new BufferedReader(new InputStreamReader(p.getInputStream()), 1024);
line = input.readLine();
input.close();
}
catch (IOException ex)
{
Log.e(TAG, "Unable to read sysprop " + propName, ex);
return null;
}
finally
{
if(input != null)
{
try
{
input.close();
}
catch (IOException e)
{
Log.e(TAG, "Exception while closing InputStream", e);
}
}
}
return line;
}
¿Alguien con un CM ROM puede ejecutar esto por mí?
Btw. Cuidado, este es el código GPL. Yo, por mi parte, no puedo usarlo. Cualquier forma más fácil o no GPL?
He echado un vistazo. http://code.google.com/p/cyanogen-updater/source/browse/trunk/src/cmupdaterapp/utils/SysUtils.java#19 pública getReadableModVersion static String() { cadena ModVer = getSystemProperty (Constantes.SYS_PROP_MOD_VERSION); return (modVer == null || modVer.length() == 0? "Desconocido": modVer); } Por el cual la constante es esto: public static final Cadena SYS_PROP_MOD_VERSION = "ro.modversion"; ¿Funciona Cyanogen? ¿Podrías ejecutar eso por mí y decirme el resultado? –
¿No hay formato en los comentarios? Lo que sea que puse también en la parte superior, entonces. –
Sí, tengo una versión de su rom ejecutándose, y el resultado es "CyanogenMod-4.0.4", sin embargo, cuando se ejecuta en una compilación SDK oficial a través del emulador, obtengo "Desconocido". La 'ro.modversion' se establece en el archivo build.prop en /system/build.prop –