diff --git a/MessengerProj/src/main/AndroidManifest.xml b/MessengerProj/src/main/AndroidManifest.xml index c9c460cbe..0cd103d1c 100644 --- a/MessengerProj/src/main/AndroidManifest.xml +++ b/MessengerProj/src/main/AndroidManifest.xml @@ -227,7 +227,12 @@ - + + sharedFiles = new HashMap<>(); + public static void openForViewOrShare(Activity activity, int msg_id, String cmd) { MrMsg msg = MrMailbox.getMsg(msg_id); @@ -832,6 +835,7 @@ public class AndroidUtilities { Uri uri; if (path.startsWith(MrMailbox.getBlobdir())) { uri = Uri.parse("content://" + BuildConfig.APPLICATION_ID + ".attachments/" + file.getName()); + sharedFiles.put("/"+file.getName(), 1); // as different Android version handle uris in putExtra differently, we also check them on our own } else { if (Build.VERSION.SDK_INT >= 24) { uri = FileProvider.getUriForFile(activity, BuildConfig.APPLICATION_ID + ".provider", file); diff --git a/MessengerProj/src/main/java/com/b44t/messenger/AttachmentsContentProvider.java b/MessengerProj/src/main/java/com/b44t/messenger/AttachmentsContentProvider.java index 3d4493020..720b5eeb5 100644 --- a/MessengerProj/src/main/java/com/b44t/messenger/AttachmentsContentProvider.java +++ b/MessengerProj/src/main/java/com/b44t/messenger/AttachmentsContentProvider.java @@ -48,7 +48,12 @@ public class AttachmentsContentProvider extends ContentProvider { @Override public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException { - File privateFile = new File(MrMailbox.getBlobdir(), uri.getPath()); + String path = uri.getPath(); + if (!AndroidUtilities.sharedFiles.containsKey(path)) { + throw new FileNotFoundException("File was not shared before."); + } + + File privateFile = new File(MrMailbox.getBlobdir(), path); return ParcelFileDescriptor.open(privateFile, ParcelFileDescriptor.MODE_READ_ONLY); }