将MediaPlayer.SetDataSource()设置为'/storage/emulated/0/...'

时间:2017-01-01 22:35:34

标签: java c# android xamarin xamarin.forms

我正在提到手机上的媒体here(使用ContentResolver),但返回的路径格式为/storage/emulated/0/...并尝试将其用于mediaPlayer.SetDataSource()产生一个Java.IO.FileNotFoundException。我意识到这条路径可能不是真正的路径,但我如何从这条路径中获得真正的路径呢?

当我在项目文件夹中有资产时,MediaPlayer工作正常。但我不能让它与其他文件一起工作。我已经设置了READ_EXTERNAL_STORAGE的权限。

虽然我宁愿在C#中得到答案,但Java中的答案可能就足够了。

修改

我看到一些处理类似事情的答案,但他们都假设我有一个Uri。虽然上面的方法返回一个字符串。我没有成功地将它转换为Uri,所以我甚至无法测试这些解决方案。

2 个答案:

答案 0 :(得分:0)

访问android: Get real path from uri

你可以从中了解如何从中获得真正的道路。

答案 1 :(得分:0)

尝试传递此而不是传递硬编码值(/ storage / emulated / 0 /)

String path= Environment.getExternalStorageDirectory()+"/yourFolder/";

不要忘记在清单文件中添加权限