diff --git a/FAQ.md b/FAQ.md index 9454f27764..b04a274bc6 100644 --- a/FAQ.md +++ b/FAQ.md @@ -149,6 +149,7 @@ FairEmail follows all the best practices for an email client as decribed in [thi * *prevent device from sleeping* (WAKE_LOCK): to keep the device awake while synchronizing messages * Optional: *read your contacts* (READ_CONTACTS): to autocomplete addresses and to show photos * Optional: *find accounts on the device* (GET_ACCOUNTS): to use [OAuth](https://en.wikipedia.org/wiki/OAuth) instead of passwords +* Optional: *read the contents of your SD card* (READ_EXTERNAL_STORAGE): to accept files from other, outdated apps, see also [this FAQ](#user-content-faq49) * Android 5.1 Lollipop and before: *use accounts on the device* (USE_CREDENTIALS): needed to select accounts (not used/needed on later Android versions)
@@ -864,6 +865,7 @@ For security and privacy reasons modern apps like FairEmail have no full access This can result into the error message *An outdated app sent a file path instead of a file stream* when a file name instead of a file stream is presented to FairEmail. You can fix this by switching to an up-to-date file manager or an app designed for recent Android versions. +Alternatively, you can grant FairEmail read access to the storage space on your device in the Android app settings. See also [question 25](#user-content-faq25) and [what Google writes about it](https://developer.android.com/training/secure-file-sharing/share-file#RespondToRequest). diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 20d2bd371f..e217c8277e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -10,6 +10,7 @@ + diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 3edeeb56d6..6939c37ae8 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -1327,14 +1327,15 @@ public class FragmentCompose extends FragmentBase { private static EntityAttachment addAttachment(Context context, long id, Uri uri, boolean image) throws IOException { - if ("file".equals(uri.getScheme())) { + if ("file".equals(uri.getScheme()) && + !Helper.hasPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE)) { Log.w("Add attachment uri=" + uri); throw new IllegalArgumentException(context.getString(R.string.title_no_stream)); } EntityAttachment attachment = new EntityAttachment(); - String name = null; + String name = uri.getLastPathSegment(); String s = null; Cursor cursor = null;