mirror of
https://github.com/M66B/FairEmail.git
synced 2026-04-05 00:23:09 +02:00
Prevent crash
This commit is contained in:
@@ -2801,7 +2801,7 @@ public class FragmentCompose extends FragmentBase {
|
||||
.setGestureInsetBottomIgnored(true).show();
|
||||
else {
|
||||
Log.e(ex);
|
||||
Log.unexpectedError(getParentFragmentManager(), ex);
|
||||
Log.unexpectedError(FragmentCompose.this, ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5877,7 +5877,7 @@ public class FragmentCompose extends FragmentBase {
|
||||
if (ex instanceof SecurityException)
|
||||
ex = new Throwable(getString(R.string.title_no_permissions), ex);
|
||||
|
||||
Log.unexpectedError(getParentFragmentManager(), ex,
|
||||
Log.unexpectedError(FragmentCompose.this, ex,
|
||||
!(ex instanceof IOException || ex.getCause() instanceof IOException));
|
||||
/*
|
||||
java.lang.IllegalStateException: java.io.IOException: Failed to redact /storage/emulated/0/Download/97203830-piston-vecteur-icône-simple-symbole-plat-sur-fond-blanc.jpg
|
||||
|
||||
@@ -304,7 +304,7 @@ public class FragmentDialogForwardRaw extends FragmentDialogBase {
|
||||
startActivity(send);
|
||||
} catch (Throwable ex) {
|
||||
// java.lang.IllegalArgumentException: Failed to resolve canonical path for ...
|
||||
Log.unexpectedError(getParentFragmentManager(), ex);
|
||||
Log.unexpectedError(FragmentDialogForwardRaw.this, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9151,7 +9151,7 @@ public class FragmentMessages extends FragmentBase
|
||||
}
|
||||
}.execute(FragmentMessages.this, args, "certificate:store");
|
||||
} catch (Throwable ex) {
|
||||
Log.unexpectedError(getParentFragmentManager(), ex);
|
||||
Log.unexpectedError(FragmentMessages.this, ex);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1475,7 +1475,7 @@ public class FragmentOptionsBackup extends FragmentBase implements SharedPrefere
|
||||
fragment.setTargetFragment(this, export ? REQUEST_EXPORT_SELECT : REQUEST_IMPORT_SELECT);
|
||||
fragment.show(getParentFragmentManager(), "password");
|
||||
} catch (Throwable ex) {
|
||||
Log.unexpectedError(getParentFragmentManager(), ex);
|
||||
Log.unexpectedError(FragmentOptionsBackup.this, ex);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1543,7 +1543,7 @@ public class FragmentOptionsBackup extends FragmentBase implements SharedPrefere
|
||||
.putExtra(Intent.EXTRA_TEXT, "Activate");
|
||||
startActivity(intent);
|
||||
} catch (Throwable ex) {
|
||||
Log.unexpectedError(getParentFragmentManager(), ex);
|
||||
Log.unexpectedError(FragmentOptionsBackup.this, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -871,7 +871,7 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared
|
||||
try {
|
||||
getContext().getContentResolver().takePersistableUriPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||
if (!Helper.isPersisted(getContext(), uri, true, false))
|
||||
Log.unexpectedError(getParentFragmentManager(),
|
||||
Log.unexpectedError(FragmentOptionsNotifications.this,
|
||||
new IllegalStateException("No permission granted to access selected sound " + uri));
|
||||
} catch (Throwable ex) {
|
||||
Log.w(ex);
|
||||
|
||||
@@ -998,10 +998,10 @@ public class FragmentRule extends FragmentBase {
|
||||
String permission = android.Manifest.permission.READ_CONTACTS;
|
||||
requestPermissions(new String[]{permission}, REQUEST_PERMISSIONS);
|
||||
} catch (Throwable ex1) {
|
||||
Log.unexpectedError(getParentFragmentManager(), ex1);
|
||||
Log.unexpectedError(FragmentRule.this, ex1);
|
||||
}
|
||||
else
|
||||
Log.unexpectedError(getParentFragmentManager(), ex);
|
||||
Log.unexpectedError(FragmentRule.this, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -85,6 +85,7 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.RequiresApi;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.preference.PreferenceManager;
|
||||
import androidx.webkit.WebViewCompat;
|
||||
@@ -1854,6 +1855,33 @@ public class Log {
|
||||
return draft;
|
||||
}
|
||||
|
||||
static void unexpectedError(Fragment fragment, Throwable ex) {
|
||||
unexpectedError(fragment, ex, true);
|
||||
}
|
||||
|
||||
static void unexpectedError(Fragment fragment, Throwable ex, boolean report) {
|
||||
try {
|
||||
unexpectedError(fragment.getParentFragmentManager(), ex, report);
|
||||
} catch (Throwable exex) {
|
||||
Log.w(exex);
|
||||
/*
|
||||
Exception java.lang.IllegalStateException:
|
||||
at androidx.fragment.app.Fragment.getParentFragmentManager (Fragment.java:1107)
|
||||
at eu.faircode.email.FragmentDialogForwardRaw.send (FragmentDialogForwardRaw.java:307)
|
||||
at eu.faircode.email.FragmentDialogForwardRaw.access$200 (FragmentDialogForwardRaw.java:56)
|
||||
at eu.faircode.email.FragmentDialogForwardRaw$4.onClick (FragmentDialogForwardRaw.java:239)
|
||||
at androidx.appcompat.app.AlertController$ButtonHandler.handleMessage (AlertController.java:167)
|
||||
at android.os.Handler.dispatchMessage (Handler.java:106)
|
||||
at android.os.Looper.loopOnce (Looper.java:210)
|
||||
at android.os.Looper.loop (Looper.java:299)
|
||||
at android.app.ActivityThread.main (ActivityThread.java:8168)
|
||||
at java.lang.reflect.Method.invoke (Method.java)
|
||||
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:556)
|
||||
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1037)
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
static void unexpectedError(FragmentManager manager, Throwable ex) {
|
||||
unexpectedError(manager, ex, true);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user