Uri to FilePath и наоборот

210
21 февраля 2022, 01:30

СИТУАЦИЙ №1

Есть Uri uri. Он хорошо работает, музыка играет через плеер с него. но когда я пытаюсь через uri обратиться к самому файлу, то у меня ничего не выходит. file.exists() возвращает false.

uri = data.getData();
           Log.e("f", "" + uri);      //     E/f: content://com.android.externalstorage.documents/document/primary%3AVLAD%2F1.mp3
            mus = MediaPlayer.create(MainActivity.this, uri);
            mus.start(); // музыка iграе, дзеуки пяюць
 File fl = new File(uri.getPath());  // я понимаю, что тут ошибка
            Log.e("we  ", "" + fl.exists() + "    " + fl.getPath());     //    E/we: false    /document/primary:VLAD/1.mp3

СИТАЦИЯ №2

Этот же аудио-файл берем через File через Environment.getExternalStorageDirectory(). файл существует, все отлично. пытаемся сделать из него uri, но плеер не хочет его воспроизводить.

 File fl = new File(Environment.getExternalStorageDirectory() + "/VLAD/1.mp3");
                Log.e("f   ", "" + fl.exists()); //   E/f: true
                Uri u = Uri.fromFile(fl);
                Log.e("f   ", "" + u); // E/f: file:///storage/emulated/0/VLAD/1.mp3
                mus = MediaPlayer.create(MainActivity.this, u);
                mus.start();

Ошибка

  java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaPlayer.start()' on a null object reference

Нужно решения для обоих случаев. Гугл уже не помогает.

READ ALSO
Обновление entity. TransientObjectException

Обновление entity. TransientObjectException

Здравствуйте имеются 3 entity (Doctor, Patient, Recipe) которые с помощью Hibernate замапленны в БДRecipe имеет в качестве поля Doctor и Patient

98
Проблема записи файла на некоторых устройствах через openOutputStream(mUri)

Проблема записи файла на некоторых устройствах через openOutputStream(mUri)

Я пишу написал приложение, которое открывает текстовый файл через Uri: (getContentResolver()openInputStream(mUri))

85
Можно ли на одном AnchorPane менять местами Labl(ы)? [закрыт]

Можно ли на одном AnchorPane менять местами Labl(ы)? [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

181