StartActivityForReslut возвращает uri не существующего файла

Я начинающий android разработчик. Пишу небольшой fileChooser через механизм startActivityForReslut.

объект, который возвращает uri выбранного файла:

ActivityResultLauncher<Intent> startFileChooser = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
            new ActivityResultCallback<ActivityResult>() {
                @Override
                public void onActivityResult(ActivityResult result) {
                    if(result==null) return;
                    if(result.getResultCode()== Activity.RESULT_OK){
                        Intent data = result.getData();
                        Uri uri = data.getData();

                        boolean is_ex=(new File(String.valueOf(uri))).exists();
                        if(is_ex==false)    //вот тут все время будет false при проверке существования файла с выбранным uri
                            return;
                        
                        //какие-то действия
                        //...
                    }
                }
            });

Функция, которая вызывается при нажатии на кнопку и открывающая fileChooser:

private void openFileChooser(){
        Intent data= new Intent(Intent.ACTION_OPEN_DOCUMENT);
        data.addCategory(Intent.CATEGORY_OPENABLE);
        data.setType("*/*");
        data = Intent.createChooser(data,"Выберите файл");
        startFileChooser.launch(data);

    }

пример возвращаемого uri:

content://com.android.externalstorage.documents/document/primary%3AMyMusic%2F%5BDnB%5D%20-%20Muzzy%20-%20Crescendo%20(feat.%20MYLK).mp3

Вот при попытке проверить существование файла по данному uri или измерить размер файла ни чего не получается.

Два дня бьюсь на проблемой. Делал уже и через startActivityForResult -> onActivityReslut. И с Cursor игрался как вот тут File Uri. Получить файл. (курсор всегда пустой)

Вот в идеале бы получить uri вот такого формата:

/storage/emulated/0/Samsung/Music/[DnB] - Muzzy - Crescendo (feat. MYLK).mp3

Но как это сделать совершенно не понимаю! Очень прошу помощи! Заранее спасибо!


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