2016-05-03 7 views
0

Ich lade Dateien wie pdf, ppt, doc etc zum Server mit meiner Android-App, aber in Marshmallow, wenn Dateiauswahl öffnet und ich meine SD-Karte oder internen Speicher Es gibt zwei Probleme:
1. Es zeigt alle Dateien wie Bilder, Videos und Dokumente usw., die ich nicht auswählen kann, aber ich verwendete Intent-Typ als Anwendung/pdf; appkication/ppt usw., also sollte ich diese Dateien auswählen lassen.
2. zweitens, wenn ich externe Dateimanager wie ES Datei Explorer etc es dann alle Dateien wie Bilder, Videos, Dokumente, APKs verwenden und dieses Mal kann ich jeden beliebigen Dateityp wählen
Hier ist mein Code für Dateiauswahlnicht möglich, Dateien wie PDF, doc, ppt in MARSHAMALLOW Dateiauswahl

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
      intent.setType("application/pdf;application/docx;application/xlsx;application/pptx;application/pptx;application/txt"); 
      startActivityForResult(intent, PICK_FILE_REQUEST); 

i Eibisch verwenden, und ich denke, es ist nur in Eibisch geschieht, wie ich andere Geräte nicht habe Earby diesen Code zu testen, auf mir so hier Dank

helfen habe ich versucht, es wie diese

aber es ließ mich nicht irgendeine Datei wählen, aber wenn ich nur einen MIME-Typ wie pdf oder docx dann es funktioniert und ließ mich PDF oder docx und ich suchte im Internet und fand diesen Weg, mehrere MIME-Typ zu verwenden das heißt mit | Anstatt von ; und für die meisten Benutzer funktioniert es gut, aber nicht für mich.

+0

'setType()' nimmt keine durch Semikolon getrennte Liste von Typen. Es benötigt einen * einzigen * MIME-Typ. – CommonsWare

+0

okay, aber wenn ich alle Arten von Dokumenten wie doc, pdf, ppt, xls etc auswählen möchte dann wie soll ich es tun?> @commonsWare – SinGhHarpAl

+1

ich habe es so versucht 'intent.setType ("application/pdf | application/docx | anwendung/xlsx | anwendung/pptx | anwendung/txt "); ' aber es ließ mich nicht irgendeine Datei wählen, aber wenn ich nur einen MIME-Typ wie pdf oder docx dann es funktioniert und lassen Sie mich PDF oder docx und ich suchte im Internet und fand auf diese Weise mehrere MIME-Typ zu verwenden | Anstatt von ; und für die meisten Benutzer funktioniert es gut, aber nicht für mich. – SinGhHarpAl

Antwort

1

setType() akzeptiert keine durch Pipe getrennte Liste von Typen oder eine durch Semikolon getrennte Liste von Typen. Es dauert einzigen MIME-Typ.

Auf API-Geräten der Stufe 19+ können Sie gerne add EXTRA_MIME_TYPES an Ihre Intent (eine String[] von zusätzlichen MIME-Typen). In der Theorie sollten ACTION_GET_CONTENT Implementierungen dies honorieren. In der Praxis erwarte ich nur wenige. ACTION_OPEN_DOCUMENT kann zuverlässiger sein, in dem Android das selbst implementiert, während ACTION_GET_CONTENT auf App Entwicklerimplementierungen beruht.

Da Ihr Intent ist für ACTION_GET_CONTENT (das heißt, die Sie anfordern Inhalt), können Sie application/* verwenden, obwohl dies finden Sie einige Dateitypen, die Sie nicht unterstützen kann.

Andernfalls fragen Sie immer nur nach einem MIME-Typ.

+0

Ja das habe ich gemacht. Ich habe 'application/*' verwendet, aber ja, es gibt mir eine Menge anderer Arten von Anwendungen einschließlich apk etc. Aber wie Sie gesagt haben, dass ich eine Zeichenfolge [] von zusätzlichen Mime-Typen in 19+ Api verwenden kann und wie ich Marshmallow habe, damit das funktioniert? – SinGhHarpAl

Verwandte Themen