Почему полученный URI файлов PDF неверен?

В моем приложении я позволяю пользователям выбирать файлы PDF. Мое решение работало раньше, но теперь оно не работает, и я не могу понять, что вызывает проблему. Intent data метода onActivityResult теперь возвращает другой путь URI, который заканчивается разными числами в конце URI при выборе любого файла PDF. Мой код:

 public void addPDF(View v){

    if (Build.VERSION.SDK_INT <19){
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_GET_CONTENT);
        intent.setType("application/pdf");
        try {
            startActivityForResult(Intent.createChooser(intent, "Choose a pdf file"), 10);
        } catch (android.content.ActivityNotFoundException ex) {
            //show error
        }
    }else{
        Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
        intent.setType("application/pdf");
        intent.addCategory(Intent.CATEGORY_OPENABLE);

        try {
            startActivityForResult(Intent.createChooser(intent, "Choose a pdf file"), 11);
        } catch (android.content.ActivityNotFoundException ex) {
            //show error
        }

    }

}


@Override
    protected void onActivityResult(int requestCode, int resultCode, final Intent data) {
        if ((requestCode == 10 || requestCode == 11) && resultCode == RESULT_OK) {

            Uri pdf_uri = data.getData();

            //WILL RETURN SOMTHING LIKE content://com.android.providers.downloads.documents/document/15
            //or content://com.android.providers.downloads.documents/document/527 depending on different PDF files I pick
            pdf_path = pdf_uri.getPath();
        }
    }

Интересно, почему путь отображается в виде разных чисел (в конце пути), на что указывают эти числа и как решить эту проблему, чтобы получить правильный путь к каждому файлу PDF?

Пути нет, только Uri. Почему вы пытаетесь найти путь?

ianhanniballake 05.11.2018 23:31

@ianhanniballake pdf_path будет отправлен на сервер для загрузки позже.

AndroidDev 05.11.2018 23:35

См. Также это и это.

CommonsWare 06.11.2018 00:39
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
47
0

Другие вопросы по теме