Android правильный способ получить файл из Uri - PullRequest
0 голосов
/ 06 июля 2018

Я выбираю PDF из локального архива, используя:

startActivityForResult(Intent.createChooser(new Intent().setType("application/pdf").setAction(Intent.ACTION_GET_CONTENT), getString(R.string.str_select_file)), request_id_archive);

и управляю результатом:

    @Override
    protected void onActivityResult(int request_code, int result_code, Intent data) {
        super.onActivityResult(request_code, result_code, data);

        if (request_code == request_id_archive && result_code == RESULT_OK && data != null && data.getData() != null) {
            Uri myuri = data.getData();
            String mypath = myuri.getPath();
            File myfile = new File(mypath);
            Log.d("mylog1", uri.toString());
            Log.d("mylog2", uri.getPath());
            Log.d("mylog3", f.getPath());
            Log.d("mylog4", f.toString());
            Log.d("mylog5", Boolean.toString(f.exists()));
        }
        else {...}

Кажется, что файл не был успешно создан.Результат моих журналов:

  • mylog1 -> content: // media / external / file / 7406
  • mylog2 -> / external / file / 7406
  • mylog3 -> / external / file / 7406
  • mylog4 -> / external / file / 7406
  • mylog5 -> false

Метод file.exist () returnмне этот файл не существует.Почему?

В другом коде я пытаюсь управлять файлом для многих других операций:

...
InputStream inputStream = new FileInputStream(file);
...

Но мой сбой приложения в Logcat я вижу:

java.io.FileNotFoundException: /document/raw:/storage/emulated/0/Download/20180702_121938.pdf (No such file or directory)

Я тестирую свой код на Android 7.

...