Как открыть PDF с URI содержимого на Android> = 8? - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь открыть PDF с помощью существующих установленных приложений PDF, таких как Google PDF Viewer. Но экран PDF показывает пустым.

Я создал намерение и использовал ACTION_VIEW фильтр, но когда я открываю в Google PDF, он показывает только пустой экран, ничего другого, даже имя файла в Google PDF не виден, только идентификатор документа (content-provider: // .. ../document/122 <- этот идентификатор) отображается </p>

String filePath = "content://com.android.providers.downloads.documents/document/346";
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(filePath), "application/pdf");
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
mActivity.startActivity(Intent.createChooser(intent, "select an app to open this file"));

1 Ответ

0 голосов
/ 06 июня 2019

setFlags заменит все предыдущие флаги по назначению. Поэтому используйте addFlags вместо -

intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

также проверьте, есть ли у вас долгосрочный доступ к URI контента. После Android 4.3 вам нужно будет запросить постоянное разрешение, используя takePersistableUriPermission() для содержимого, которое вы получаете. Также вам нужно изменить ACTION_VIEW на ACTION_OPEN_DOCUMENT, где вы получаете URI, который вы упомянули для takePersistableUriPermission() для работы.
Прочитайте статьи ниже для получения дополнительной информации -
- Об использовании ACTION_OPEN_DOCUMENT
- Как использовать новую платформу Storage Access Framework для доступа / изменения / создания файла

...