In Bezug auf Rotwang habe ich herausgefunden, was das Problem war.
Der Pfad von getExternalStorageDirectory() hat kein gültiges Verzeichnis für die zu speichernde Datei zurückgegeben.
In meinem Fall ging es darum, Screenshots zu speichern, damit der Benutzer auf die Galerie schauen konnte.
Also habe ich Environment.getExternalStoragePublicDirectory ( Environment.DIRECTORY_PICTURES); stattdessen.
So ist der vollständige Code zum Speichern einer Bildschirmaufnahme unten.
private void takeScreenshot() {
Date now = new Date();
android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss", now);
try {
File path = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES);
File file = new File(path, now + ".jpg");
path.mkdirs();
View v1 = getWindow().getDecorView().getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
//File imageFile = new File(mPath);
FileOutputStream outputStream = new FileOutputStream(file);
int quality = 100;
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
outputStream.flush();
outputStream.close();
MediaScannerConnection.scanFile(this,
new String[] { file.toString() }, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.e("ExternalStorage", "Scanned " + path + ":");
Log.e("ExternalStorage", "-> uri=" + uri);
}
});
} catch (Throwable e) {
Log.e("Error", "Exception on TakeScreenshot", e);
}
}
Danke nochmal Rotwang.
Nach diesem Code ('String mPath = Environment.getExternalStorageDirectory(). ToString() +"/"+ jetzt +" .jpg ";'), speichern Sie es weder in die Galerie noch auf die ** externer Speicher. Lassen Sie sich nicht durch den Namen dieser Methode täuschen: [getExternalStorageDirectory()] (https://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory()). –
Aber die folgenden Codes scheinen das aufgenommene Bild in eine Datei mit diesem Verzeichnis zu bringen. Wird das nicht in diesem Verzeichnis gespeichert? – March3April4
Nicht auf den ** externen ** Speicher, wie Sie es meinen. Bitte lesen Sie die offiziellen Dokumente, die in meinem vorherigen Kommentar verlinkt sind. –