Примерно через неделю после того, как я выдернул свои волосы, я наконец закончил и готов обратиться за помощью.
В основном в своем приложении я использую нижеприведенное намерение, чтобы создать новый PDF, что и делается.через Storage Access Framework.
val intent = Intent(Intent.ACTION_CREATE_DOCUMENT)
intent.addCategory(Intent.CATEGORY_OPENABLE)
intent.type = "application/pdf"
intent.putExtra(Intent.EXTRA_TITLE, title)
startActivityForResult(intent, 1234)
После этого я получаю Uri для метода onActivityResult (), например так:
uri = dataIntent.data
if (uri != null) {
val takeFlags = data.flags and (Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
contentResolver.takePersistableUriPermission(uri, takeFlags)
generatePdf(uri)
}
Генерация PDF в порядке, проблема возникает, когда мне нужновызвать ACTION_VIEW для пользователя, чтобы увидеть сгенерированный файл или поделиться файлом с помощью ACTION_SEND.
Пример использования ACTION_VIEW (Да, я использую и Kotlin, и Java):
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setDataAndType(uri, mimeType);
startActivity(intent);
Я не могу на всю жизнь понять, как получить Uri, который другойприложение может использовать.
То, что я пробовал до сих пор:
- Этот ответ , но выдается следующее исключение: java.lang.IllegalArgumentException:столбец "_data" не существует.Доступные столбцы: [_display_name, _size]
- DocumentFile, используя DocumentFile.fromFile (файл) , что переводит Uri из content: //com.myapp.provider/root/document/primary:folder-created-by-the-user/generated-pdf.pdf в файл: /// root / document / primary: папка, созданная пользователем /Генерируемый-pdf.pdf , и до сих пор ни одно приложение не может открыть его
- Многие другие вещи, которые я даже больше не могу вспомнить
Если бы кто-то мог пролить свет наэтот вопрос будет по достоинству оценен.