Ich habe eine App mit einer Bildergalerie und möchte, dass der Benutzer sie in seiner eigenen Galerie speichern kann. Ich habe ein Optionsmenü mit einer einzigen Stimme "Speichern" erstellt, um dies zu ermöglichen, aber das Problem ist ... wie kann ich das Bild in der Galerie speichern?
Das ist mein Code:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.menuFinale:
imgView.setDrawingCacheEnabled(true);
Bitmap bitmap = imgView.getDrawingCache();
File root = Environment.getExternalStorageDirectory();
File file = new File(root.getAbsolutePath()+"/DCIM/Camera/img.jpg");
try
{
file.createNewFile();
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(CompressFormat.JPEG, 100, ostream);
ostream.close();
}
catch (Exception e)
{
e.printStackTrace();
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Ich bin mir dieses Teils des Codes nicht sicher:
File root = Environment.getExternalStorageDirectory();
File file = new File(root.getAbsolutePath()+"/DCIM/Camera/img.jpg");
Ist es richtig, in der Galerie zu speichern? Leider funktioniert der Code nicht :(
android
imageview
gallery
save-image
Christian Giupponi
quelle
quelle
Antworten:
Der vorherige Code fügt das Bild am Ende der Galerie hinzu. Wenn Sie das Datum so ändern möchten, dass es am Anfang oder in anderen Metadaten angezeigt wird, lesen Sie den folgenden Code (Cortesy of SK, samkirton ):
https://gist.github.com/samkirton/0242ba81d7ca00b475b9
quelle
.git
am Ende zu entfernen )Eigentlich können Sie Ihr Bild an jedem Ort speichern. Wenn Sie in einem öffentlichen Raum speichern möchten, damit jede andere Anwendung darauf zugreifen kann, verwenden Sie diesen Code:
Das Bild geht nicht zum Album. Dazu müssen Sie einen Scan aufrufen:
Weitere Informationen finden Sie unter https://developer.android.com/training/camera/photobasics.html#TaskGallery
quelle
Ich habe viele Dinge versucht, damit dies auf Marshmallow und Lollipop funktioniert. Schließlich habe ich das gespeicherte Bild in den DCIM-Ordner verschoben (neue Google Photo App scannt Bilder nur, wenn sie sich anscheinend in diesem Ordner befinden).
Und dann der Standardcode zum Scannen von Dateien, den Sie auch auf der Google Developers-Website finden .
Bitte denken Sie daran, dass dieser Ordner nicht auf jedem Gerät der Welt vorhanden sein kann und dass Sie ab Marshmallow (API 23) die Berechtigung für WRITE_EXTERNAL_STORAGE beim Benutzer anfordern müssen.
quelle
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)
hat den Trick für mich gemacht. Vielen Dank!getExternalStoragePublicDirectory()
ist jetzt auf API 29 veraltet. Müssen MediaStoreNach diesem Kurs ist der richtige Weg, dies zu tun:
Dadurch erhalten Sie den Stammpfad für das Galerieverzeichnis.
quelle
quelle
Sie können ein Verzeichnis im Kameraordner erstellen und das Bild speichern. Danach können Sie einfach Ihren Scan durchführen. Ihr Bild wird sofort in der Galerie angezeigt.
quelle
Ich komme mit dem gleichen Zweifel hierher, aber für Xamarin für Android habe ich die Sigrist-Antwort verwendet, um diese Methode nach dem Speichern meiner Datei auszuführen:
und es hat mein Problem gelöst, Thx Sigrist. Ich habe es hierher gebracht, weil ich keine Antwort für Xamarin gefunden habe und ich hoffe, dass es anderen Menschen helfen kann.
quelle
In meinem Fall haben die oben genannten Lösungen nicht funktioniert. Ich musste Folgendes tun:
quelle
ContentProvider
vorzuziehende LösungDieser Code befindet sich in der onCreate-Methode. Dieser Code dient zum Erstellen eines Verzeichnisses mit dem Namen app_name. Jetzt kann auf dieses Verzeichnis mit der Standard-Dateimanager-App in Android zugegriffen werden. Verwenden Sie diese Zeichenfolge filePath, wo immer dies erforderlich ist, um Ihren Zielordner festzulegen. Ich bin sicher, dass diese Methode auch auf Android 7 funktioniert, da ich sie getestet habe. Daher kann sie auch auf anderen Android-Versionen funktionieren.
quelle