No such file or directory. Поиск внутренних файлов JAVA Android

Доброго времени суток!

Код

@SuppressLint("WrongConstant")
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == REQUEST_FOLDER && resultCode == RESULT_OK && data != null) {
            ContentResolver contentResolver = this.getApplicationContext().getContentResolver();
            int takeFlags = data.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION |
                    Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
            Uri folderUri = data.getData(); //uri каталога, в который будет разрешена запись
            contentResolver.takePersistableUriPermission(folderUri, takeFlags);
            readFiles(folderUri);
        }
    }
    private void readFiles(Uri treeUri) {
        DocumentFile pickedDir = DocumentFile.fromTreeUri(this, treeUri);
        String fileName = "qwerty.xlsx";
        if (pickedDir != null && pickedDir.isDirectory()) {
            for (DocumentFile file : pickedDir.listFiles()) {
                if (file.isFile() && fileName.equals(file.getName())) {
// Чтение содержимого файла
                    Log.e("qwer", "Файл найден");

                    try {
                        List excelData = ExcelReader.readExcel(file.getUri().getPath());
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }

Основная проблема, что не находит директорию, т.к. лог о найденном файле есть. Так вот вопрос, как можно элегантно решить проблему?

Android 29+, все разрешения на чтение запись в манифесте есть.

При этом непонятно, является ли данный путь /tree/primary:Download/Files/document/primary:Download/Files/ явно правильным, т.к. проверить с устройства невозможно, т.к. путь файла: Память телефона/Download/Files , папка files создана приложением, доступ к ней запрашивается каждый раз, как запускается код выше, открывается проводник и в нем видно этот файл.

Ошибка:

E/qwer: Файл найден
W/System.err: java.io.FileNotFoundException: /tree/primary:Download/Files/document/primary:Download/Files/qwerty.xlsx: open failed: ENOENT (No such file or directory)
W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:574)
W/System.err:     at java.io.FileInputStream.<init>(FileInputStream.java:160)
W/System.err:     at java.io.FileInputStream.<init>(FileInputStream.java:115)
W/System.err:     at com.example.pivo3.ExcelReader.readExcel(ExcelReader.java:17)
W/System.err:     at com.example.pivo3.Inventory.readFiles(Inventory.java:241)
W/System.err:     at com.example.pivo3.Inventory.onActivityResult(Inventory.java:225)
W/System.err:     at android.app.Activity.dispatchActivityResult(Activity.java:8487)
W/System.err:     at android.app.ActivityThread.deliverResults(ActivityThread.java:5534)
W/System.err:     at android.app.ActivityThread.handleSendResult(ActivityThread.java:5580)
W/System.err:     at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:54)
W/System.err:     at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
W/System.err:     at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
W/System.err:     at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
W/System.err:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2346)
W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:106)
W/System.err:     at android.os.Looper.loopOnce(Looper.java:238)
W/System.err:     at android.os.Looper.loop(Looper.java:349)
W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:8241)
W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584)
W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1034)
W/System.err: Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
W/System.err:     at libcore.io.Linux.open(Native Method)
W/System.err:     at libcore.io.ForwardingOs.open(ForwardingOs.java:563)
W/System.err:     at libcore.io.BlockGuardOs.open(BlockGuardOs.java:274)
W/System.err:     at libcore.io.ForwardingOs.open(ForwardingOs.java:563)
W/System.err:     at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:8123)
W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:560)
W/System.err:   ... 

Какие варианты могут быть для получения файла в нужной директории, т.к. с 29 api уже доступы ограничены к папкам. Или есть более простой способ, без указания директории вручную. Хранить файл в директории приложения нельзя, т.к. там его не видит юзер, а до этой dir никак не могу добраться.


Ответы (0 шт):