Я пытаюсь выбрать PDF-файл с помощью намеренного действия ACTION_OPEN_DOCUMENT на Android, но на некоторых устройствах его значение равно нулю.
Я хочу, чтобы пользователь выбирал файл PDF только со своего устройства. Для этого я использовал намеренное действие ACTION_OPEN_DOCUMENT.
Это работает корректно на большинстве устройств, но на некоторых устройствах, в основном Xiaomi, при выборе файла дает ноль при попытке получить данные намерения intent.getData () в onActivityResult с помощью опции File Manager, как показано на рисунке ниже.
Я пытаюсь избежать использования действия ACTION_GET_CONTENT, поскольку сторонние приложения не ограничивают содержимое только в формате pdf. Другие приложения допускают формат, который также не является PDF.
![file chooser image](https://i.imgur.com/HYeaNB2.jpg)
На изображении при выборе файла из меню File manager его значение равно null как intent.getData (), но работает нормально, когда я выбираю документ из опции Documents.
Ниже приведен код запроса выбора файлов
Intent intent = new Intent();
intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("application/pdf");
startActivityForResult(Intent.createChooser(intent, "Choose a file"), Constants.FILE_CHOOSER);
После выбора файла
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
final Uri uri = intent.getData(); //Uri is null
}
}
Я ожидаю, что некоторые данные в intent.getData (), но они дают ноль.
Неустранимое исключение: java.lang.RuntimeException: сбой при доставке результата ResultInfo {who = null, request = 501, result = -1, data = Intent {(has extras)}} в действие {com.avail.easyloans.android /com.avail.easyloans.feature.cashup.activities.documents.ActivityUploadBankStmt}: java.lang.NullPointerException: попытка вызвать виртуальный метод 'java.lang.String android.net.Uri.getAuthority ()' для ссылка на нулевой объект
В чем может быть возможная ошибка?