Сохранение Logcat в текстовый файл на устройстве Android
Я обнаружил несколько сбоев при запуске приложения на устройстве Android, которые не отображаются в эмуляторе. Поэтому мне нужно сохранить Logcat в текстовом файле в памяти моего устройства или на SD-карте. Не могли бы вы, пожалуйста, предложить мне хороший способ сделать это?
Переведено автоматически
Ответ 1
Используйте класс Application в начале вашего приложения. Это обеспечивает надлежащую обработку файлов и журналов.
Приведенный ниже код создает файл журнала в следующем расположении:
XXX - это текущее время в миллисекундах. Каждый раз, когда вы запускаете свое приложение, будет создаваться новый logcat_XXX.txt файл.
publicclassMyPersonalAppextendsApplication {
/** * Called when the application is starting, before any activity, service, or receiver objects (excluding content providers) have been created. */ publicvoidonCreate() { super.onCreate();
// clear the previous logcat and then write the new one to the file try { Processprocess= Runtime.getRuntime().exec("logcat -c"); process = Runtime.getRuntime().exec("logcat -f " + logFile); } catch ( IOException e ) { e.printStackTrace(); }
} elseif ( isExternalStorageReadable() ) { // only readable } else { // not accessible } }
/* Checks if external storage is available for read and write */ publicbooleanisExternalStorageWritable() { Stringstate= Environment.getExternalStorageState(); if ( Environment.MEDIA_MOUNTED.equals( state ) ) { returntrue; } returnfalse; }
/* Checks if external storage is available to at least read */ publicbooleanisExternalStorageReadable() { Stringstate= Environment.getExternalStorageState(); if ( Environment.MEDIA_MOUNTED.equals( state ) || Environment.MEDIA_MOUNTED_READ_ONLY.equals( state ) ) { returntrue; } returnfalse; } }
вам нужны правильные разрешения и имя вашего класса приложения в вашем файле .manifest:
Поскольку я пока не могу комментировать, я опубликую это в качестве ответа
Я сделал, как сказал @HeisenBerg, у меня все работало нормально, но поскольку начиная с Android 6.0 мы должны запрашивать разрешение во время выполнения, мне пришлось добавить следующее: