2016-06-06 17 views
3

Ich versuche, ein Wörterbuch auf SD-Karte zu lesen (Inhalt des Ordners wird von Drittanbieter-App verwaltet - ex. Dropbox).Lesen von beliebigen SD-Kartenordner

Obwohl ich meine App-Berechtigungen erteilt:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Die App nur auf eine Art von Gerät verwendet wird, Samsung Galaxy Tab 10.1 (Android 5.0.2), damit ich weiß den genauen Pfad zu sdcard und die Datei ich versuche zu lesen: /storage/extSdCard/sip.png

Als ich nennen:

FileOutputStream out = new FileOutputStream("/storage/extSdCard/sip.png"); 

Es wirft:

Ausnahme java.io.FileNotFoundException: /storage/extSdCard/sip.png: offen ist fehlgeschlagen: EACCES (Permission denied)

ich auch versucht:

grantUriPermission(getPackageName(), new Uri.parse("/storage/extSdCard"), 
Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 

Was muss ich tun, zu tun, um Zugriff auf die Datei zu bekommen?

Antwort

2

Was muss ich tun, um auf die Datei zugreifen zu können?

Sie haben keinen direkten Dateisystemzugriff auf beliebige Standorte auf removable storage auf Android 4.4 +.

Wenn möglich, verschieben Sie die Datei woanders (z. B. external storage).

Oder use ACTION_OPEN_DOCUMENT und haben die Benutzer die Datei wählen, dann eine ContentResolver und openInputStream() verwenden, um auf den Inhalt der Uri, die Sie in onActivityResult() von Ihrem ACTION_OPEN_DOCUMENT Anfrage erhalten identifiziert zu arbeiten.

+0

Diese App verwendet dynamische Lesedateien, die sich auf Wechselspeicher befinden und von einer anderen App synchronisiert werden. Gibt es eine andere Möglichkeit, größere Dateien zu lesen? –

+0

@ M.Sestak: Es tut mir leid, aber ich verstehe Ihre Frage nicht. – CommonsWare

+0

@CommonsWare Danke für den Link. Dies wird viel helfen, während es den Kunden erklärt wird –