在寻找解决方案后,我发现 link 可以检索以下路径:
使用资源Id
语法: android.resource://[package]/[resource_id]
android.resource://[package]/[resource_id]
例子: Uri.parse("android.resource://com.my.package/" + R.raw.mp3filename);
Uri.parse("android.resource://com.my.package/" + R.raw.mp3filename);
这正是我想要的。问题是,我正在使用lolipop,但它不起作用。解析包/资源时,从Uri获取路径。parse将为空。还有其他方法来写这个吗,因为在我的Song类中,我只能访问resourceId(R.raw.mp3filename)。
是否可以使用R.raw.mp3file获取文件路径
否,因为它不是设备上的文件。它是开发机器硬盘上的一个文件。在设备上,它只是APK文件中的一个条目。
要么:
做任何你想做的事情,以其他不涉及文件路径的方式,或者
使用 openInputStream() 在上 Resources 对象(您可以从任何 Context 通过 getResources() ),并使用Java I/O将该资源的内容复制到本地文件,例如 internal storage
openInputStream()
Resources
Context
getResources()