2016-12-10 2 views
0

Ich versuche eine App zu erstellen, wo der Benutzer die Dateien auf seinem Telefon durchsuchen und eine auswählen kann. Dann möchte ich die ausgewählte Datei öffnen und lesen. Es klingt einfach, aber ich stecke fest. Hier ist der Code, den ich dafür, dass der Benutzer verwenden, um die Datei auszuwählen:
Erlaube dem Benutzer eine Datei auszuwählen und sie zu lesen

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
//intent.addCategory(Intent.CATEGORY_OPENABLE); 
intent.setType("file/*"); 
startActivityForResult(intent,1); 

Ich verstehe nicht, warum, wenn ich diesen Code ausführen i-Datei in meinem Download-Ordner (auf meinem Handy) sehen kann, aber ich kann nichts darin auswählen. Ich habe alle erforderlichen Berechtigungen in meinem Manifest, aber es funktioniert immer noch nicht. Irgendeine Idee ?

+1

Entfernen Sie 'setType()' oder verwenden Sie 'setType (" */* ")'. 'file/*' ist kein gültiger MIME-Typ. – CommonsWare

+0

, aber ich möchte nur den Benutzer öffnen. TXT-Dateien – Mtoypc

+0

Dann verwenden Sie 'setType (" text/plain ")'. – CommonsWare

Antwort

1

Wenn Sie setType() auf einem Intent aufrufen, müssen Sie einen gültigen MIME-Typ oder MIME-Typ Muster bereitstellen. Es gibt keinen offiziellen MIME-Typ, der mit file/ beginnt, und daher ist es unwahrscheinlich, dass ein MIME-Typmuster von file/* mit irgendetwas übereinstimmt.

aber ich möchte nur die Benutzerdateien öffnen .txt

Sie können nicht ACTION_GET_CONTENT nach Dateierweiterung filtern, da es keine Dateierweiterung sein muss, oder sogar einen Dateinamen an. Was Sie können tun ist Filter auf MIME-Typ, und der MIME-Typ für Nur-Text ist text/plain. Wenn Sie andere Arten von Text (z. B. HTML) unterstützen möchten, können Sie das MIME-Typmuster text/* verwenden.

Verwandte Themen