Попытка воспроизвести mp3 во внешнем хранилище эмулятора (но не на SD-карте). После некоторого поиска в Google я подумал, что у меня есть код, который будет работать, а также добавил следующие строки в файл AndroidManifest.xml моего приложения:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Это все еще не удается, и я нашел сообщения о том, что, по-видимому, мне нужно запросить разрешение какЧто ж. Скопировал в какой-то код, который я обнаружил, который должен был это сделать, но затем я получил сообщение от Android Studio, в котором говорилось, что его использование ограничит уровень API, с которым он будет работать. Тогда я понял, что ушел из глубины того, что является правильным способом для достижения моей цели. Был бы весьма признателен некоторый контекст для определения уровня API или проверки работоспособности моего кода MediaPlayer. Спасибо.
class MainActivity : AppCompatActivity()
{
private lateinit var mp: MediaPlayer
private var totalTime: Int = 0
override fun onCreate( savedInstanceState: Bundle? )
{
super.onCreate( savedInstanceState )
setContentView( R.layout.activity_main )
// this is the permission code I get the API level warning about
val MY_READ_EXTERNAL_REQUEST : Int = 1
if (checkSelfPermission(
Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), MY_READ_EXTERNAL_REQUEST)
}
mp = MediaPlayer()
// path and name of mp3 file I'm trying to play
mp.setDataSource( "/storage/emulated/0/Music/Bad Guys Win.mp3" )
mp.prepare()
mp.start()
}
}
Ошибка разрешения:
java.lang.RuntimeException: невозможно запустить действие ComponentInfo {com.example.scratch / com.example.scratch.MainActivity}:java.io.FileNotFoundException: / storage / emulated / 0 / Music / Bad Guys Win.mp3: открыть не удалось: EACCES (в доступе отказано)
Снимок экрана предупреждения API от Android Studio