In meiner App, die Sie ein Bild auf der SD-Karte speichert, dann Benutzer wählen, was damit zu tun ist. Löschen, speichern oder senden Wenn Sie Löschen drücken. Ich rufe File.delete()
es löscht die Dateien, wenn ich in die Galerie gehe und wenn ich manchmal später zurück gehe, sehe ich ein schwarzes Bild, das sagt, dass Datei nicht laden kann. Dieses Bild habe ich zuvor gelöscht. Was ist daran falsch und warum verschwindet es nicht vollständig?File.delete() löscht nicht vollständig leere Bilddatei
Wie speichere ich das Bild:
public static File getOutputMediaFile(byte[] data){
image= BitmapFactory.decodeByteArray(data, 0, data.length);
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "FrontFlash");
// Create the storage directory if it does not exist
if (!mediaStorageDir.exists()){
if (!mediaStorageDir.mkdirs()) return null;
}
// Create a media file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File mediaFile;
mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_" + timeStamp + ".jpg");
return mediaFile;
}
@Override
public void onPictureTaken(byte[] data, Camera camera){
pictureFile = Util.getOutputMediaFile(data);
if (pictureFile == null){
Toast.makeText(this, "Couldn't create file", Toast.LENGTH_SHORT).show();
}
else{
try{
FileOutputStream fos = new FileOutputStream(pictureFile);
fos.write(data);
fos.close();
}
catch (FileNotFoundException e){
Toast.makeText(this, "File not found exception", Toast.LENGTH_SHORT).show();
}
catch (IOException e){
Toast.makeText(this, "IO Exception", Toast.LENGTH_SHORT).show();
}
}
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "FrontCam"))));
String photopath = pictureFile.getPath().toString();
// Dreht das Bild
bmp = BitmapFactory.decodeFile(photopath);
matrix = new Matrix();
matrix.postRotate(270);
bmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true);
FileOutputStream fOut;
try {
fOut = new FileOutputStream(pictureFile);
bmp.compress(Bitmap.CompressFormat.JPEG, 85, fOut);
fOut.flush();
fOut.close();
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
wo onClick wo Bild löschen ist
public void exit(View view){
deleted = pictureFile.delete();
//startActivity(home);
close();
finish();
}
Das ist, weil die Galerie nicht aktualisiert wurde. Starten Sie einen Medien-Scan und es sollte in Ordnung sein. –
ist das nicht, was das tut, wenn es das Foto speichert? 'sendBroadcast (neue Absicht (Intent.ACTION_MEDIA_MOUNTED, Uri.parse (" file: // "+ neue Datei (Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_PICTURES)," FrontCam ")));' –
Wenn nicht bitte zeig mir was zu Nachdem ich das Bild gelöscht habe –