mirror of
https://github.com/M66B/FairEmail.git
synced 2026-04-21 00:13:41 +02:00
Handle com.android.externalstorage has no access
This commit is contained in:
@@ -3731,7 +3731,7 @@ public class FragmentCompose extends FragmentBase {
|
||||
|
||||
new SimpleTask<Spanned>() {
|
||||
@Override
|
||||
protected Spanned onExecute(Context context, Bundle args) throws IOException {
|
||||
protected Spanned onExecute(Context context, Bundle args) throws IOException, SecurityException {
|
||||
final long id = args.getLong("id");
|
||||
List<Uri> uris = args.getParcelableArrayList("uris");
|
||||
String[] types = args.getStringArray("types");
|
||||
@@ -5300,7 +5300,7 @@ public class FragmentCompose extends FragmentBase {
|
||||
}
|
||||
|
||||
private static EntityAttachment addAttachment(
|
||||
Context context, long id, Uri uri, String type, boolean image, int resize, boolean privacy) throws IOException {
|
||||
Context context, long id, Uri uri, String type, boolean image, int resize, boolean privacy) throws IOException, SecurityException {
|
||||
Log.w("Add attachment uri=" + uri + " image=" + image + " resize=" + resize + " privacy=" + privacy);
|
||||
|
||||
NoStreamException.check(uri, context);
|
||||
@@ -5493,6 +5493,12 @@ public class FragmentCompose extends FragmentBase {
|
||||
// Reset progress on failure
|
||||
Log.e(ex);
|
||||
db.attachment().setError(attachment.id, Log.formatThrowable(ex, false));
|
||||
|
||||
// com.android.externalstorage has no access to content://...
|
||||
if (ex instanceof SecurityException &&
|
||||
ex.getMessage() != null &&
|
||||
ex.getMessage().contains("com.android.externalstorage has no access"))
|
||||
throw new SecurityException(ex.getMessage(), ex);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -6376,7 +6382,7 @@ public class FragmentCompose extends FragmentBase {
|
||||
images.add(uri);
|
||||
else
|
||||
addAttachment(context, data.draft.id, uri, null, false, 0, false);
|
||||
} catch (IOException ex) {
|
||||
} catch (IOException | SecurityException ex) {
|
||||
Log.e(ex);
|
||||
}
|
||||
|
||||
@@ -6983,7 +6989,19 @@ public class FragmentCompose extends FragmentBase {
|
||||
Helper.setSnackbarOptions(
|
||||
Snackbar.make(view, new ThrowableWrapper(ex).toSafeString(), Snackbar.LENGTH_LONG))
|
||||
.show();
|
||||
} else {
|
||||
} else if (ex instanceof SecurityException &&
|
||||
ex.getMessage() != null &&
|
||||
ex.getMessage().contains("com.android.externalstorage has no access"))
|
||||
Helper.setSnackbarOptions(
|
||||
Snackbar.make(view, new ThrowableWrapper(ex).toSafeString(), Snackbar.LENGTH_LONG))
|
||||
.setAction(R.string.title_fix, new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Helper.viewFAQ(v.getContext(), 25);
|
||||
}
|
||||
})
|
||||
.show();
|
||||
else {
|
||||
if (ex instanceof IOException &&
|
||||
ex.getCause() instanceof ErrnoException &&
|
||||
((ErrnoException) ex.getCause()).errno == ENOSPC)
|
||||
|
||||
Reference in New Issue
Block a user