Fix timestamp and size for attachment saves.

fork-5.53.8
Cody Henthorne 2021-02-09 11:29:18 -05:00
rodzic 2cca6a5afb
commit b935999548
1 zmienionych plików z 15 dodań i 8 usunięć

Wyświetl plik

@ -33,6 +33,7 @@ import java.io.OutputStream;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.TimeUnit;
public class SaveAttachmentTask extends ProgressDialogAsyncTask<SaveAttachmentTask.Attachment, Void, Pair<Integer, String>> { public class SaveAttachmentTask extends ProgressDialogAsyncTask<SaveAttachmentTask.Attachment, Void, Pair<Integer, String>> {
private static final String TAG = SaveAttachmentTask.class.getSimpleName(); private static final String TAG = SaveAttachmentTask.class.getSimpleName();
@ -100,6 +101,7 @@ public class SaveAttachmentTask extends ProgressDialogAsyncTask<SaveAttachmentTa
Uri outputUri = getMediaStoreContentUriForType(contentType); Uri outputUri = getMediaStoreContentUriForType(contentType);
Uri mediaUri = createOutputUri(outputUri, contentType, fileName); Uri mediaUri = createOutputUri(outputUri, contentType, fileName);
ContentValues updateValues = new ContentValues();
try (InputStream inputStream = PartAuthority.getAttachmentStream(context, attachment.uri)) { try (InputStream inputStream = PartAuthority.getAttachmentStream(context, attachment.uri)) {
@ -114,15 +116,20 @@ public class SaveAttachmentTask extends ProgressDialogAsyncTask<SaveAttachmentTa
} }
} else { } else {
try (OutputStream outputStream = context.getContentResolver().openOutputStream(mediaUri, "w")) { try (OutputStream outputStream = context.getContentResolver().openOutputStream(mediaUri, "w")) {
StreamUtil.copy(inputStream, outputStream); long total = StreamUtil.copy(inputStream, outputStream);
if (total > 0) {
updateValues.put(MediaStore.MediaColumns.SIZE, total);
}
} }
} }
} }
if (Build.VERSION.SDK_INT > 28) { if (Build.VERSION.SDK_INT > 28) {
ContentValues updatePendingValues = new ContentValues(); updateValues.put(MediaStore.MediaColumns.IS_PENDING, 0);
updatePendingValues.put(MediaStore.MediaColumns.IS_PENDING, 0); }
getContext().getContentResolver().update(mediaUri, updatePendingValues, null, null);
if (updateValues.size() > 0) {
getContext().getContentResolver().update(mediaUri, updateValues, null, null);
} }
return outputUri.getLastPathSegment(); return outputUri.getLastPathSegment();
@ -180,8 +187,8 @@ public class SaveAttachmentTask extends ProgressDialogAsyncTask<SaveAttachmentTa
ContentValues contentValues = new ContentValues(); ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, fileName); contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, fileName);
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, mimeType); contentValues.put(MediaStore.MediaColumns.MIME_TYPE, mimeType);
contentValues.put(MediaStore.MediaColumns.DATE_ADDED, System.currentTimeMillis()); contentValues.put(MediaStore.MediaColumns.DATE_ADDED, TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));
contentValues.put(MediaStore.MediaColumns.DATE_MODIFIED, System.currentTimeMillis()); contentValues.put(MediaStore.MediaColumns.DATE_MODIFIED, TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));
if (Build.VERSION.SDK_INT > 28) { if (Build.VERSION.SDK_INT > 28) {
contentValues.put(MediaStore.MediaColumns.IS_PENDING, 1); contentValues.put(MediaStore.MediaColumns.IS_PENDING, 1);