properly index take photo uris from file provider

This commit is contained in:
Daniel Gultsch 2016-10-03 11:25:15 +02:00
parent b6e7def9db
commit f4a883848c
2 changed files with 15 additions and 8 deletions

View file

@ -432,14 +432,12 @@ public class FileBackend {
return frame; return frame;
} }
private static String getTakePhotoPath() {
return Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)+"/Camera/";
}
public Uri getTakePhotoUri() { public Uri getTakePhotoUri() {
StringBuilder pathBuilder = new StringBuilder(); File file = new File(getTakePhotoPath()+"IMG_" + this.imageDateFormat.format(new Date()) + ".jpg");
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.getParentFile().mkdirs(); file.getParentFile().mkdirs();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return FileProvider.getUriForFile(mXmppConnectionService, "eu.siacs.conversations.files", file); 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) { public Avatar getPepAvatar(Uri image, int size, Bitmap.CompressFormat format) {
try { try {
Avatar avatar = new Avatar(); Avatar avatar = new Avatar();

View file

@ -1411,7 +1411,7 @@ public class ConversationActivity extends XmppActivity
mPendingImageUris.clear(); mPendingImageUris.clear();
} }
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
intent.setData(uri); intent.setData(FileBackend.getIndexableTakePhotoUri(uri));
sendBroadcast(intent); sendBroadcast(intent);
} else { } else {
mPendingImageUris.clear(); mPendingImageUris.clear();