From f4a883848cc68f2e5fad6038e4db809af723955e Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 3 Oct 2016 11:25:15 +0200 Subject: [PATCH] properly index take photo uris from file provider --- .../persistance/FileBackend.java | 21 ++++++++++++------- .../ui/ConversationActivity.java | 2 +- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java index f6cd8f2a8..cff6e5bf3 100644 --- a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java +++ b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java @@ -432,14 +432,12 @@ public class FileBackend { return frame; } + private static String getTakePhotoPath() { + return Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)+"/Camera/"; + } + public Uri getTakePhotoUri() { - StringBuilder pathBuilder = new StringBuilder(); - pathBuilder.append(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)); - pathBuilder.append('/'); - pathBuilder.append("Camera"); - pathBuilder.append('/'); - pathBuilder.append("IMG_" + this.imageDateFormat.format(new Date()) + ".jpg"); - File file = new File(pathBuilder.toString()); + File file = new File(getTakePhotoPath()+"IMG_" + this.imageDateFormat.format(new Date()) + ".jpg"); file.getParentFile().mkdirs(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { return FileProvider.getUriForFile(mXmppConnectionService, "eu.siacs.conversations.files", file); @@ -448,6 +446,15 @@ public class FileBackend { } } + public static Uri getIndexableTakePhotoUri(Uri original) { + if ("file".equals(original.getScheme())) { + return original; + } else { + List segments = original.getPathSegments(); + return Uri.parse("file://"+getTakePhotoPath()+segments.get(segments.size() - 1)); + } + } + public Avatar getPepAvatar(Uri image, int size, Bitmap.CompressFormat format) { try { Avatar avatar = new Avatar(); diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java index 5db916d0b..0802da3ba 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java @@ -1411,7 +1411,7 @@ public class ConversationActivity extends XmppActivity mPendingImageUris.clear(); } Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); - intent.setData(uri); + intent.setData(FileBackend.getIndexableTakePhotoUri(uri)); sendBroadcast(intent); } else { mPendingImageUris.clear();