Skip to content

Commit e3af1a3

Browse files
committed
Add captured file to MediaStore properly
1 parent be5b88c commit e3af1a3

File tree

2 files changed

+23
-19
lines changed

2 files changed

+23
-19
lines changed

filepicker/src/main/java/com/jaiselrahman/filepicker/activity/FilePickerActivity.java

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import com.jaiselrahman.filepicker.model.MediaFile;
4444
import com.jaiselrahman.filepicker.view.DividerItemDecoration;
4545

46+
import java.io.File;
4647
import java.util.ArrayList;
4748

4849
public class FilePickerActivity extends AppCompatActivity
@@ -158,28 +159,22 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis
158159
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
159160
super.onActivityResult(requestCode, resultCode, data);
160161
if (requestCode == FileGalleryAdapter.CAPTURE_IMAGE_VIDEO) {
161-
String path = fileGalleryAdapter.getLastCapturedFilePath();
162+
File file = fileGalleryAdapter.getLastCapturedFile();
162163
if (resultCode == RESULT_OK) {
163-
MediaScannerConnection.scanFile(this, new String[]{path}, null,
164+
MediaScannerConnection.scanFile(this, new String[]{file.getAbsolutePath()}, null,
164165
new MediaScannerConnection.OnScanCompletedListener() {
165166
@Override
166167
public void onScanCompleted(String path, final Uri uri) {
167-
runOnUiThread(new Runnable() {
168-
@Override
169-
public void run() {
170-
if (uri != null) {
171-
loadFiles();
172-
}
173-
}
174-
});
168+
if (uri != null) {
169+
loadFiles();
170+
}
175171
}
176172
});
177173
} else {
178-
new java.io.File(path).delete();
174+
file.delete();
179175
}
180176
}
181177
}
182-
183178
@Override
184179
public boolean onCreateOptionsMenu(Menu menu) {
185180
getMenuInflater().inflate(R.menu.filegallery_menu, menu);

filepicker/src/main/java/com/jaiselrahman/filepicker/adapter/FileGalleryAdapter.java

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package com.jaiselrahman.filepicker.adapter;
1818

1919
import android.app.Activity;
20+
import android.content.ContentValues;
2021
import android.content.Intent;
2122
import android.net.Uri;
2223
import android.provider.MediaStore;
@@ -38,6 +39,7 @@
3839
import com.jaiselrahman.filepicker.utils.TimeUtils;
3940
import com.jaiselrahman.filepicker.view.SquareImage;
4041

42+
import java.io.File;
4143
import java.text.SimpleDateFormat;
4244
import java.util.ArrayList;
4345
import java.util.Date;
@@ -57,7 +59,7 @@ public class FileGalleryAdapter extends MultiSelectionAdapter<FileGalleryAdapter
5759
private OnSelectionListener<ViewHolder> onSelectionListener;
5860
private boolean showCamera;
5961
private boolean showVideoCamera;
60-
private String filePath;
62+
private File lastCapturedFile;
6163
private SimpleDateFormat TimeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault());
6264

6365
public FileGalleryAdapter(Activity activity, ArrayList<MediaFile> mediaFiles, int imageSize, boolean showCamera, boolean showVideoCamera) {
@@ -78,8 +80,8 @@ else if (showCamera || showVideoCamera)
7880
setItemStartPostion(1);
7981
}
8082

81-
public String getLastCapturedFilePath() {
82-
return filePath;
83+
public File getLastCapturedFile() {
84+
return lastCapturedFile;
8385
}
8486

8587
@NonNull
@@ -156,27 +158,34 @@ private void handleCamera(ImageView openCamera, final boolean forVideo) {
156158
public void onClick(View v) {
157159
Intent intent;
158160
String fileName;
159-
java.io.File file, dir;
161+
File dir;
162+
Uri externalContentUri;
160163
if (forVideo) {
161164
intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
162165
fileName = "/VID_" + getTimeStamp() + ".mp4";
163166
dir = getExternalStoragePublicDirectory(DIRECTORY_MOVIES);
167+
externalContentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
164168
} else {
165169
intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
166170
dir = getExternalStoragePublicDirectory(DIRECTORY_PICTURES);
167171
fileName = "/IMG_" + getTimeStamp() + ".jpeg";
172+
externalContentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
168173
}
169174
if (!dir.exists() && !dir.mkdir()) {
170175
Log.d(TAG, "onClick: " +
171176
(forVideo ? "MOVIES" : "PICTURES") + " Directory not exists");
172177
return;
173178
}
174-
file = new java.io.File(dir.getAbsolutePath() + fileName);
175-
filePath = file.getAbsolutePath();
179+
lastCapturedFile = new File(dir.getAbsolutePath() + fileName);
176180

177181
Uri fileUri = FileProvider.getUriForFile(activity,
178182
"com.jaiselrahman.filepicker.provider",
179-
file);
183+
lastCapturedFile);
184+
185+
ContentValues values = new ContentValues();
186+
values.put(MediaStore.MediaColumns.DATA, lastCapturedFile.getAbsolutePath());
187+
activity.getContentResolver().insert(externalContentUri, values);
188+
180189
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
181190
activity.startActivityForResult(intent, CAPTURE_IMAGE_VIDEO);
182191
}

0 commit comments

Comments
 (0)