0

Ich spreche hier im Zusammenhang mit USB keine Memory Card oder Internal Speicher und brauche einen genauen Pfad nicht ein Uri.Willst du eine Datei Realpath von Usb in android 6 Marshmallow?

Bis Android L Ich bekomme einen Dateipfad von einem/mnt oder/Speicher oder einem anderen Verzeichnis.aber in Marshmallow habe ich nicht gefunden, wo mein USB ist genau.

Dann gehe ich weiter zum Storage Access Framework. Aber es gibt nicht den tatsächlichen Pfad zurück, der mir ein Uri zurückgegeben hat.

gehe ich auch durch das AFileChooser Projekt und ein Stackoverflow Post Android Gallery on KitKat returns different Uri for Intent.ACTION_GET_CONTENT

aber es ist nicht helpfull.So gibt es eine Möglichkeit, die Realpath wie (/storage/abc/filename.mp4) zugreifen können.

Antwort

1

dann gehe ich weiter zum Storage Access Framework. Aber es gibt nicht den tatsächlichen Pfad zurück, es gibt mir einen Uri zurück.

Das liegt daran, dass das Storage Access Framework nicht mit Dateien funktioniert. Es funktioniert mit Speicheranbietern. Speicheranbieter können ihre Inhalte gerne speichern, wie es ihre Entwickler wünschen. Dazu können auf Servern gespeicherte Inhalte, in Datenbanken gespeicherte Inhalte, in verschlüsselten Containern gespeicherte Inhalte, im laufenden Betrieb generierte Inhalte usw. gehören. Keiner von denen hat einen "tatsächlichen Pfad", der für Sie von Bedeutung ist. Wenn Sie das Storage Access Framework verwenden, kann der Benutzer den gewünschten Speicheranbieter auswählen.

Also gibt es eine Möglichkeit, wie ich auf den Realpath wie (/storage/abc/filename.mp4) zugreifen kann.

Erstellen Sie Ihre eigene Kopie des Inhalts, indem Sie Uri und Java I/O verwenden. Dann kennst du den "Realpath" deiner Kopie.

Ein Uri ist wie eine URL. Es ist nicht erforderlich, dass die URL dieser Webseite einer Datei auf Ihrem Computer zugeordnet wird. Es gibt keinen magischen Algorithmus, der eine URL in einen lokalen Dateipfad konvertiert ... außer den Inhalt selbst herunterzuladen und eine lokale Datei zu erstellen.

+0

aufwendige eigene kopie des content.how kann ich eine kopie von video file.any link? – wVV

+0

@wVV: Verwenden Sie 'ContentResolver' und' openInputStream() ', um einen' InputStream' für den durch den 'Uri' identifizierten Inhalt zu erhalten. Erstellen Sie einen 'FileOutputStream' in einer lokalen Datei (z. B.' getCacheDir() '). Verwenden Sie Java I/O, um die Bytes vom 'InputStream' zum' OutputStream' zu kopieren. Es gibt andere Implementierungen, aber das ist der typische Ansatz und ein Beispiel für das Muster. – CommonsWare

+0

was ist, wenn die Dateigröße größer als 250mb ist.Es wird einen Overhead auf dem System erstellen. – wVV

Verwandte Themen