'File not found, but file exists (android)
My App creates a file in it data directory : /storage/emulated/0/Android/media/one.empty3.feature.app/data/MyImage_38.jpg And opens a second activity ChooseEffects. From then it process the file and should output a result. I check all permissions for writing, try to write in Pictures/ directory or in app data directory.
Edit
public void fillGallery(Bitmap photo, File file) {
System.out.println("Replaced : " + file.getAbsolutePath());
File[] allFiles = new File[]{file};
ArrayList<View> views = new ArrayList<>();
for (int i = 0; i < Objects.requireNonNull(allFiles).length; i++) {
//views.add(imageView);
Bitmap read = ImageIO.read(allFiles[i]).bitmap;
imageView.setImageBitmap(read);
currentFile = allFiles[i];
}
gallery = findViewById(R.id.imageTakenPreviewGallery);
gallery.addTouchables(views);
File myFilePicture = writePhoto(photo, "MyFilePicture");
currentFile = myFilePicture;
imageView.setImageBitmap(photo);
Toast.makeText(this, "File " + myFilePicture.toString() + " added", Toast.LENGTH_LONG).show();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == MY_CAMERA_PERMISSION_CODE) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "camera permission granted", Toast.LENGTH_LONG).show();
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
} else {
Toast.makeText(this, "camera permission denied", Toast.LENGTH_LONG).show();
}
}
}
public File writePhoto(@NotNull Bitmap bitmap, String name) {
Intent camera = new Intent(
android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
int n = 1;
//Folder is already created
String dirName1 = "", dirName2 = "";
do {
dirName1 = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getPath()
+ "/FeatureApp/data/" + name + "_" + n + ".jpg";
dirName2 = "/storage/emulated/0/Android/media/one.empty3.feature.app/"//+getFilesDir()
+ "/data/" + name + "_" + n + ".jpg";
n++;
} while (new File(dirName1).exists() || new File(dirName2).exists());
//startActivityForResult(camera, 1);
File dir1 = new File(dirName1.substring(0, dirName1.lastIndexOf(File.separator)));
File file1 = new File(dirName1);
File dir2 = new File(dirName2.substring(0, dirName2.lastIndexOf(File.separator)));
File file2 = new File(dirName2);
Uri uriSavedImage = Uri.fromFile(file2);
camera.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
try {
// Make sure the Pictures directory exists.
if (!dir1.exists())
if (!dir1.mkdirs()) {
System.err.println("Error creating dir = " + dir1.getAbsolutePath());
return null;
}
if (!dir2.exists())
if (!dir2.mkdirs()) {
System.err.println("Error creating dir = " + dir2.getAbsolutePath());
return null;
}
ImageIO.write(new BufferedImage(bitmap), "jpg", file1);
ImageIO.write(new BufferedImage(bitmap), "jpg", file2);
System.out.println("File (photo) " + file1.getAbsolutePath());
System.out.println("File (photo) " + file2.getAbsolutePath());
return file2;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
My second method is in another activity and write image after filtering :
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
