diff --git a/app/src/main/java/info/zamojski/soft/towercollector/MyApplication.java b/app/src/main/java/info/zamojski/soft/towercollector/MyApplication.java index 68501530..408f4a7d 100644 --- a/app/src/main/java/info/zamojski/soft/towercollector/MyApplication.java +++ b/app/src/main/java/info/zamojski/soft/towercollector/MyApplication.java @@ -100,7 +100,7 @@ public void uncaughtException(@NotNull Thread thread, @NotNull Throwable ex) { } // strange but it happens that app is tested on devices with lower SDK - don't send ACRA reports // also ignore errors caused by system failures - if (isSdkVersionSupported() && !hasSystemDied(ex) && !isAndroid10TelephonyManagerLambdaBug(ex)) { + if (isSdkVersionSupported() && !hasSystemDied(ex) && !isAndroid10TelephonyManagerLambdaBug(ex) && !hasFileSystemInBadStage(ex)) { if (isDatabaseCorrupted(ex)) { String dbString = DatabaseOperations.getDatabaseBaseString(getApplication()); ACRA.getErrorReporter().putCustomData("DB", dbString); @@ -143,6 +143,12 @@ private boolean isDatabaseCorrupted(Throwable ex) { return isCorrupted; } + private boolean hasFileSystemInBadStage(Throwable ex) { + boolean isType = ex instanceof IllegalStateException; + boolean isInBadState = ex.getMessage() != null && ex.getMessage().contains("The file system on the device is in a bad state."); + return isType && isInBadState; + } + private String getFullStackTrace(Throwable ex) { try { ByteArrayOutputStream stackTraceStream = new ByteArrayOutputStream();