Chcę użyć okna systemu Android w ramach Storage Access Framework do otwarcia pliku. Czynię to zKto może pokazać innym dostawcom z ACTION_OPEN_DOCUMENT
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("application/pdf");
startActivityForResult(intent, EDIT_REQUEST);
a następnie obsługiwać wracającą URI w onActivityResult()
.
Problem polega na tym, że w menu wynikowym otrzymuję znacznie mniej dostawców treści, niż się spodziewałem. Tylko Dysk Google i Pliki do pobrania (patrz lewy zrzut ekranu poniżej). Inne, takie jak Dropbox, Solid Explorer, ... nie są wyświetlane.
Podejrzewam, że powodem jest to, że te aplikacje po prostu nie ustawiają odpowiedniego filtru intencyjnego, aby pojawił się na tej liście.
Jednak inne aplikacje, na przykład Poczta Kaiten lub Chrome, w jakiś sposób wyświetlają okno dialogowe systemu z w pełni zaimplementowanymi dostawcami treści u góry listy, a następnie inne, takie jak Dropbox i Solid Explorer, poniżej, rozdzielone cienką pasek (patrz prawy zrzut ekranu).
Jak mogę uzyskać to zachowanie?
Zobacz, co pokazuje się w LogCat kiedy powoływać Kaiten Mail dokument Chooser. Lub [zainstaluj App Browser] (https://play.google.com/store/apps/details?id=com.japanesecrackers.appbrowser) i zobacz, co mają inne aplikacje w swoich elementach '' może brakować w twoim. Czy jesteś pewien, że jest to "dialog systemowy", a nie praca, która miesza efekty "ACTION_OPEN_DOCUMENT" i "ACTION_GET_CONTENT" czy coś takiego? –
CommonsWare
Spoglądając na [kod źródłowy] (https://code.google.com/p/chromium/codesearch#chromium/src/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java&q= Intent.CATEGORY_OPENABLE & sq = package: chromium & type = cs) Chrom (ium) raz może faktycznie zobaczyć, że zachowanie po prawej stronie jest wytwarzane przez stosunkowo prosty "Intent.ACTION_GET_CONTENT". To smutne, że pierwotnie dobry pomysł na strukturę dostępu do pamięci wydaje się tak źle obsługiwany przez praktycznie wszystkie aplikacje, że jest zasadniczo bezużyteczny ... – cgogolin
Myślę, że na przykład Dropbox musi implementować SAF. Według mojej wiedzy nie popierają tego. – powder366