Ich möchte den vollständigen Dateipfad von einer URI erhalten. Der URI ist kein Bild, aber es ist eine Musikdatei, aber wenn ich es wie die MediaStore-Lösung mache, funktioniert es nicht, wenn der App-Benutzer zB Astro als Browser anstelle von Music Player auswählt. Wie löse ich das?
99
content://
oder ein anderer Uri ist, der keine Datei ist.Die PathUtil-Methode funktioniert nur unter oreo. Wenn es sich um oreo handelt, ist es wahrscheinlich, dass es abstürzt, da in oreo nicht die ID, sondern der gesamte Pfad in data.getData () angezeigt wird. Sie müssen also nur eine Datei erstellen von uri und erhalten Sie seinen Pfad von getPath () und teilen Sie es. Unten ist der Arbeitscode: -
Der obige Code funktioniert in oreo und wenn er unter oreo liegt, funktioniert PathUtil. Danke!
PathUtil.java
quelle
Pfad von URI abrufen Verwenden Sie die folgende Klasse für Android alle Versionen. Zugriff auf einen beliebigen Dateityp .
quelle
Versuche dies.
quelle
null
Sie können get file path aus verschiedenen SDk-Versionen verwenden
Verwenden Sie dafür RealPathUtils
** Holen Sie sich jetzt den Dateipfad vom URI **
quelle
Eine der Antworten auf der aktuellen Seite ( diese ) ist korrekt, weist jedoch einige Fehler auf. Beispielsweise funktioniert es nicht auf Geräten mit API 29+. Ich werde den obigen Code aktualisieren und seine neue Version veröffentlichen. Ich denke, dieser Beitrag sollte als endgültige Antwort markiert werden.
Aktualisierter Code: ( WhatsApp-Unterstützung hinzugefügt )
quelle
Fügen Sie dies in der Datei build.gradle hinzu
Rufen
FileUtils.getPath(context, uri);
Sie jetzt von Ihrer Hauptklasse an.quelle
Ich weiß, dass dies bereits beantwortet wurde. Aber es gibt einige Probleme, die ich in den Kommentaren gefunden habe. Von hier aus habe ich eine großartige zuverlässige Lösung gefunden
um es zu benutzen
File file=FileUtils.getFile(uri);
quelle
Snippet-Code, wenn Sie den Dateipfad erhalten.
Bellow ist eine Klasse, auf die durch Erstellen eines neuen Objekts zugegriffen werden kann. Sie müssen auch eine Abhängigkeit in Gradel hinzufügen
implementation 'org.apache.directory.studio:org.apache.commons.io:2.4'
quelle
Um einen Dateipfad zu erhalten, verwenden Sie diesen (entnommen aus https://github.com/iPaulPro/aFileChooser ).
quelle
Antwort von @SAParkhid auf Kotlin.
quelle
Es fiel mir schwer, dies auf Xamarin herauszufinden. Aus den obigen Vorschlägen habe ich diese Lösung gefunden.
quelle
Android 7.0
Column_Index ist-1
beim Auswählen einer Datei mitActionContentGet
und*/*
geben Sie beispielsweise ein PDF einquelle