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
Но как это сделать совершенно не понимаю! Очень прошу помощи! Заранее спасибо!