Leyendo el Logcat desde la aplicación

Cuando creamos una nueva app, una de las cosas que nos tiene que importar son la cantidad de dispositivos que podrán ejecutarla sin problemas. Como sabréis, existen muchísimos dispositivos diferentes en el mercado que funcionan con alguna versión de Android, darle a nuestra app un alto nivel de compatibilidad con todos ellos nos permitirá llegar a más personas.

 

Controlando el Logcat de nuestra app

En las primeras versiones de la app (las llamadas alpha y beta), donde pueden surgir «cuelgues inesperados», és interesante registrar un log para ver que estaba pasando por dentro hasta el momento del cierre. Muchas de las aplicaciones que encontramos hoy en día en la Play Store, tienen un apartado para mandar los registros que va produciendo la app a lo largo de su funcionamiento, para así ayudar a los desarrolladores a corregir los errores con mayor facilidad y rapidez.

Si quieres dirigirte a las grandes masas, asegúrate que tu app se ejecuta en todos los dispositivos posibles sin problemas.

 

En este artículo veremos como obtener una copia del LogCat con el contenido que ha generado nuestra aplicación. Ya sea para guardarlo en un archivo de forma interna o mandarlo por correo. En cualquier caso este nos sirve para reconocer el ciclo de la app y encontrar el punto que pueda estar generando el error o cierre en un dispositivo concreto.

 

 

De LogCat a String

Para ello, será tan sencillo como ir al evento onClick de cualquier súper mega botón que hayáis creado en vuestra interfaz, para añadirle el siguiente código:

btn_enviar_log.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    Process _p = Runtime.getRuntime().exec("logcat -d es.mscdroidlabs.lux");
                    
                    BufferedReader _bReader = new BufferedReader(
                            new InputStreamReader(_p.getInputStream()));

                    StringBuilder _logcat=new StringBuilder();
                    String line = "";
                    while ((line = _bReader.readLine()) != null) {
                        _logcat.append(line);
                    }
  
                    
                }
                catch (IOException e) {}
            }
        });

 

Comentamos un poquito las líneas…

El código en sí mismo es bastante sencillo, la única línea que destaca y que es la que hace la magia es la número 5. En ella ejecutamos un comando interno mediante un objeto Process utilizando el método .exec() de la instancia del Runtime de la app:

logcat -d es.mscdroidlabs.lux

El primer parámetro ‘logcat’ es la aplicación, la opción ‘-d’ le dice a logcat que devuelva el registro y finalice, ‘es.mscdroidlabs.lux’ es el nombre del paquete de nuestra aplicación.

  • (línea 7) Creamos un BufferedReader que nos permita controlar el InputStream (resultado del proceso anterior [_p.getInputStream()] ).
  • (línea 10) Seguidamente creamos un StringBuilder que será nuestro contenedor que iremos llenando conforme leemos el BufferedReader.
  • (línea 11) Creamos un String común para leer línea por línea el BufferedReader.
  • (línea 12) Con un while recorremos el BufferedReader con el método .readLine() para acabar obteniendo nuestro Logcat en la variable _logcat

 

Como veis con estás sencillas líneas ya tenemos en una variable String el contenido deseado, ahora os quedará tratar ese contenido a vuestra manera. Una opción seria guardar el contenido del Logcat en un archivo para que el usuario lo mandé posteriormente a su desarrollador, o mandarlo directamente a través de un correo electrónico en un Intent(), o subirlo a vuestro servidor.

-Pero eso os lo dejo a vosotros! Si os surge algún error podéis dejarlo en un comentario!

 

En este enlace encontraréis mas información sobre  Logcat : https://developer.android.com/studio/command-line/logcat.html

 

También te podría gustar...

Ads Blocker Image Powered by Code Help Pro

Bloqueador de anuncios detectado

Por favor, desactiva tu bloqueador de anuncios para este sitio web. Sabemos que la publicidad puede resultarte molesta, pero esta es la única manera de mantener la web de forma gratuita y accesible para todo el mundo.