Android使用名称从原始文件夹中的文件获取Uri

Android使用名称从原始文件夹中的文件获取Uri,android,Android,我正在读关于这个问题的解决方案。我有这个密码 String filename = "android.resource://" + this.getPackageName() + "/raw/" + lastButtonFilename; try { Log.i("Home", "Recreamos la URL: " + filename); mediaPlayer.setDataSource(this, Uri.parse(filename)); } catch (Except

我正在读关于这个问题的解决方案。我有这个密码

String filename = "android.resource://" + this.getPackageName() + "/raw/" + lastButtonFilename;
try {
    Log.i("Home", "Recreamos la URL: " + filename);
    mediaPlayer.setDataSource(this, Uri.parse(filename));
} catch (Exception e) {
    Log.e("Home", "Error setting source media." + e.getMessage(), e);
}
这是我在Android Studio中的应用程序截图: 我看到这个日志:

02-06 17:49:28.605 28884-28884/com.mypackage I/Home: Recreamos la URL: android.resource://com.mypackage/raw/sound_test.mp3
02-06 17:49:28.614 28884-28884/com.mypackage W/MediaPlayer: Couldn't open file on client side; trying server side: java.io.FileNotFoundException: No resource found for: android.resource://com.mypackage/raw/sound_test.mp3
我的src/res/raw文件夹中有sound_test.mp3。我正在使用Android Studio。我从正确的路径创建了URI(我想)。不会有什么问题吧?

更改代码

String videoUri = "android.resource://" + getPackageName() + "/" + R.raw.sound_test;

本教程有视频文件,但处理过程与音频文件相同。Source

去掉所有这些文件并使用。我必须以友好方式提取文件,因为我知道在运行时该文件会选择用户,这段时间很难知道id。看起来
setDataSource()
不接受
android.resource
方案,尽管如此,我认为您没有太多的选择。您在其中创建了原始文件夹。提供它的简单截图,android.net.Uri)方法有一个上下文Uri表单:)我在主帖子中添加了一个截图