aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Gultsch <daniel@gultsch.de>2016-10-03 11:25:15 +0200
committerDaniel Gultsch <daniel@gultsch.de>2016-10-03 11:25:15 +0200
commitf4a883848cc68f2e5fad6038e4db809af723955e (patch)
treeaed887510be091693e2c54351c4617805c7b7e25
parentb6e7def9db0b30dadbc59c0a56c627bcaa50ca80 (diff)
properly index take photo uris from file provider
-rw-r--r--src/main/java/eu/siacs/conversations/persistance/FileBackend.java21
-rw-r--r--src/main/java/eu/siacs/conversations/ui/ConversationActivity.java2
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 f6cd8f2a..cff6e5bf 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<String> 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 5db916d0..0802da3b 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();