В моем приложении мне нужно выбрать изображения из хранилища и отобразить их на экране. Я использую намерение сделать это за себя. Я разместил свой код для этого ниже.
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
try {
startActivityForResult(
Intent.createChooser(intent, "Select a File to Upload"),
FILE_SELECT_CODE);
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(this, "Please install a File Manager.",
Toast.LENGTH_SHORT).show();
}
Проблема в том, что при открытии намерения я вижу кучу пустых файлов размером 0 Б. Эти файлы не отображаются в инструменте «Диспетчер файлов» на моем телефоне (где я тестирую свой приложение). Есть ли способ исправить это - либо путем удаления этих пустых файлов, либо путем намерения их игнорировать?
Примечание: я не знаю, полезно ли это, но изображения выше созданы моим приложением, который использует камеру для захвата и сохранения изображений, а затем загрузки их обратно через средство выбора файлов. Изображение с предварительным просмотром отображается в диспетчере файлов и не равно 0 B, но остальные невидимы.
Снимок экрана средства выбора файлов
Изменить: вот код Я использую для захвата изображений с помощью камеры и их сохранения.
public void captureImageAction()
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_DENIED ||
checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED) {
String[] permission = {Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};
requestPermissions(permission, PERMISSION_CODE);
} else {
openCamera();
}
} else {
openCamera();
}
}
private void openCamera() {
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, "New Picture");
values.put(MediaStore.Images.Media.DESCRIPTION, "From Camera");
image_uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, image_uri);
int IMAGE_CAPTURE_CODE = 1001;
startActivityForResult(cameraIntent, IMAGE_CAPTURE_CODE);
}