2017-09-12 2 views
-1

Ich kann den Pfad der Datei mit dem angegebenen URI nicht ermitteln.Erhalte den Pfad einer Datei mit dem URI

Ich habe eine Videoanwendung, die ein Video entsprechend dem Pfad abspielt, den es von einem EditText liest.

Ich habe eine Schaltfläche zum Durchsuchen erstellt, mit der ich den integrierten Datei-Explorer mit ACTION_GET_CONTENT öffnen kann.

Ich möchte, dass jedes Video, auf das ich im Dateiexplorer klicke, automatisch auf den EditText gesetzt wird.

Im verloren in dem Teil, wo ich meine onActivityResult nennen

public Boolean onActivityResult(int requestcode, int resultCode, Intent data){ 
    if(requestCode == RECEIVE_DATA){ 
    Uri uriEnd = data.getData(); 
    //here I am unsure of how to get the Path with the given Uri 
    //I am using SDK Build 24 Nougat 
    } 
    } 

Wenn ich rufe uriEnd.getPath(); Ich bekomme einen seltsamen Weg

Ich weiß, dass diese Frage mehrmals gestellt wurde und ich habe mir die Antworten angesehen, aber selbst mit den gegebenen Vorschlägen ist der Weg nie richtig.

+0

Kann ich Ihnen diese Bibliothek empfehlen? https://github.com/Angads25/android-filepicker Ich habe es verwendet und es löste meine Probleme mit der Datei – cutiko

Antwort

1

Ich kann den Pfad der Datei mit dem angegebenen URI nicht abrufen.

Eine Uri ist keine Datei.

Ich habe eine Schaltfläche zum Durchsuchen erstellt, mit der ich den integrierten Datei-Explorer mit ACTION_GET_CONTENT öffnen kann.

ACTION_GET_CONTENT muss nicht unbedingt irgendeine Art von "Datei-Explorer" beinhalten.

Wenn ich rufe uriEnd.getPath(); Ich erhalte einen seltsamen Weg

getPath() auf einem Uri hat nur einen Sinn, wenn die Regelung des Urifile ist. Das Schema Ihrer Uri ist content, höchstwahrscheinlich. Der Pfad wird für Sie und den Benutzer bedeutungslos sein. Es gibt wenig Wert darin, es dem Benutzer zu zeigen, und es ist noch weniger wert, es in eine EditText zu editieren (da das editierte Ergebnis kaum auf etwas zeigt).

Also, ich schlage vor, dass Sie mit einer anderen Benutzeroberfläche kommen, eine, die nicht die Uri von ACTION_GET_CONTENT für den Benutzer zeigt.

+0

, also versuche ich im Grunde eine Schaltfläche zu suchen, die den eingebauten Datei-Explorer öffnet. Ich bin in der Lage, alles zu tun, außer ich kann mich nicht darum kümmern, wie ich den Weg der Datei finden kann, die der Benutzer wählt. Wenn die Art und Weise, wie ich es mache, falsch ist, lassen Sie mich bitte wissen, was der richtige Weg wäre. Dies schien einfach der einfachste Ansatz zu sein. –

+0

@AlejandroSoto: "Ich versuche eine Schaltfläche zum Durchsuchen zu finden, die den integrierten Datei-Explorer öffnet" - es gibt keinen "eingebauten Datei-Explorer". Die nächste Sache ist die Storage Access Framework-Benutzeroberfläche, die Dinge untersucht, die keine lokalen Dateien sind (Google Drive, Netzwerkdateiserver usw.). "Ich kann alles machen, außer dass ich mich nicht darum kümmern kann, wie ich den Pfad der Datei ermitteln kann, die der Benutzer auswählt" - weil der Benutzer keine Datei auswählt. – CommonsWare

+0

@AlejandroSoto: Wenn Sie den Benutzer auf lokale Dateien im Dateisystem beschränken möchten, [verwenden Sie eine Bibliothek] (https://android-arsenal.com/tag/35?sort=created), um Ihren eigenen "Datei-Explorer" einzubetten Benutzeroberfläche in Ihre App integrieren. – CommonsWare

Verwandte Themen