Ich versuche, ein Bild aus der Galerie zu bekommen.
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select picture"), resultCode );
Nachdem ich von dieser Aktivität zurückgekehrt bin, habe ich Daten, die Uri enthalten. Es sieht aus wie:
content://media/external/images/1
Wie kann ich diesen Pfad in einen echten umwandeln (genau wie ' /sdcard/image.png
')?
Vielen Dank
android
image-gallery
Davs
quelle
quelle
uri.getPath()
dir keinen wirklichen Weg gegeben?Antworten:
Ist es wirklich notwendig, dass Sie einen physischen Weg finden?
Zum Beispiel
ImageView.setImageURI()
undContentResolver.openInputStream()
ermöglichen Ihnen den Zugriff auf den Inhalt einer Datei, ohne den tatsächlichen Pfad zu kennen.quelle
Das ist was ich mache:
und:
HINWEIS: Die
managedQuery()
Methode ist veraltet, daher verwende ich sie nicht.Letzte Änderung: Verbesserung. Wir sollten den Cursor schließen !!
quelle
@ Ren Juuse - oben in den Kommentaren ... Danke für diesen Link!
. Der Code zum Abrufen des tatsächlichen Pfads unterscheidet sich von SDK zu SDK. Im Folgenden finden Sie drei Methoden, die sich mit verschiedenen SDKs befassen.
getRealPathFromURI_API19 (): Gibt den realen Pfad für API 19 zurück (oder höher, aber nicht getestet). getRealPathFromURI_API11to18 (): Gibt den realen Pfad für API 11 zu API 18 zurück. getRealPathFromURI_below11 (): Gibt den realen Pfad für API unter 11 zurück
Schriftart: http://hmkcode.com/android-display-selected-image-and-its-real-path/
UPDATE 2016 März
Um alle Probleme mit dem Pfad der Bilder zu beheben, versuche ich, eine benutzerdefinierte Galerie als Facebook und andere Apps zu erstellen. Dies liegt daran, dass Sie nur lokale Dateien verwenden können (reale Dateien, nicht virtuelle oder temporäre). Ich löse alle Probleme mit dieser Bibliothek.
https://github.com/nohana/Laevatein (Diese Bibliothek dient zum Aufnehmen von Fotos von der Kamera oder zum Auswählen aus der Galerie. Wenn Sie aus der Galerie auswählen, hat er eine Schublade mit Alben und zeigt nur lokale Dateien an.)
quelle
Hinweis Dies ist eine Verbesserung der Antwort von @ user3516549 und ich habe sie auf Moto G3 mit Android 6.0.1 überprüft.
Ich habe dieses Problem, daher habe ich versucht, die Antwort von @ user3516549 zu beantworten, aber in einigen Fällen funktionierte sie nicht richtig. Ich habe festgestellt, dass in Android 6.0 (oder höher), wenn wir mit der Auswahl von Galeriebildern beginnen, ein Bildschirm geöffnet wird, auf dem die neuesten Bilder angezeigt werden, wenn der Benutzer ein Bild aus dieser Liste auswählt
Wenn der Benutzer eine Galerie aus der Schiebeschublade anstelle der aktuellen auswählt, erhalten wir uri as
Also habe ich es geschafft
getRealPathFromURI_API19()
BEARBEITEN: Wenn Sie versuchen, den Bildpfad der Datei auf einer externen SD-Karte in einer höheren Version abzurufen, überprüfen Sie meine Frage
quelle
BEARBEITEN: Verwenden Sie diese Lösung hier: https://stackoverflow.com/a/20559175/2033223 Funktioniert perfekt!
Zunächst einmal vielen Dank für Ihre Lösung @luizfelipetx
Ich habe deine Lösung ein wenig geändert. Das funktioniert bei mir:
Hinweis: Wir haben also Dokumente und Bilder erhalten, je nachdem, ob das Bild aus "Neuheiten", "Galerie" oder was auch immer stammt. Also extrahiere ich zuerst die Bild-ID, bevor ich sie nachschlage.
quelle
Hii hier ist mein vollständiger Code zum Aufnehmen von Bildern von einer Kamera oder einem Sturm
// Meine Variablendeklaration
// Onclick
// Methodenkörper
// Und der Rest der Dinge
quelle
options.inSampleSize = calculateInSampleSize(options, 100, 100);
Dies hat mir geholfen, uri aus der Galerie zu holen und in eine Datei für den mehrteiligen Upload zu konvertieren
https://github.com/iPaulPro/aFileChooser/blob/master/aFileChooser/src/com/ipaulpro/afilechooser/utils/FileUtils.java
quelle