En el archivo de manifiesto con dar los siguientes permisos:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
En su primera actividad/lanzador, justo después de la escritura
super.onCreate(savedInstanceState);
debajo de las líneas: Esto escribirá Logcat de su aplicación en el dispositivo de almacenamiento externo
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, EXTERNAL_PERMISSION_CODE);
}
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, READ_PERMISSION_CODE);
}
if (isExternalStorageWritable()) {
File appDirectory = new File(Environment.getExternalStorageDirectory() + "/MyAppLog");
File logDirectory = new File(appDirectory + "/log");
File logFile = new File(logDirectory, "logcat" + ".txt");
// create app folder
if (!appDirectory.exists()) {
appDirectory.mkdir();
}
// create log folder
if (!logDirectory.exists()) {
logDirectory.mkdir();
}
// clear the previous logcat and then write the new one to the file
if (logFile.exists()){
logFile.delete();
}
try {
Process process = Runtime.getRuntime().exec("logcat -c");
process = Runtime.getRuntime().exec("logcat -f " + logFile);
} catch (IOException e) {
e.printStackTrace();
}
} else if (isExternalStorageReadable()) {
// only readable
} else {
// not accessible
}
Para enviar el logcat al correo electrónico deseado, agregue O prima: utilizar a continuación el método
public void sendLogcatMail(){
if (isExternalStorageWritable()) {
File appDirectory = new File(Environment.getExternalStorageDirectory() + "/MyAppLog");
File logDirectory = new File(appDirectory + "/log");
File logFile = new File(logDirectory, "logcat" + ".txt");
if (logFile.exists()) {
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.setType("vnd.android.cursor.dir/email");
String to[] = {"[email protected]"};
emailIntent.putExtra(Intent.EXTRA_EMAIL, to);
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(String.valueOf(logFile.toURI())));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Log files");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Send some message along");
startActivity(Intent.createChooser(emailIntent, "Send email..."));
}
}
}
método para comprobar si los permisos para escribir en el almacenamiento externo se da o no:
/* Comprueba si el almacenamiento externo está disponible para lectura y escritura */
public static boolean isExternalStorageWritable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
return true;
}
return false;
}
hmm gracias. entonces tengo que agregar la fuente a mi proyecto o instalar la aplicación en el teléfono. ¿derecho? – RoflcoptrException
Tendría que preguntarles, ya que no he usado sus cosas. Como mínimo, puede ver su código fuente para ver cómo leen los registros. – CommonsWare
hmm sí leo en la página que los desarrolladores pueden usarlo, pero sin embargo no hay documentación y no sé cómo iniciarlo. pero gracias – RoflcoptrException