Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将MediaPlayer.SetDataSource()设置为'/存储/模拟/0/…';_Java_C#_Android_Xamarin_Xamarin.forms - Fatal编程技术网

Java 将MediaPlayer.SetDataSource()设置为'/存储/模拟/0/…';

Java 将MediaPlayer.SetDataSource()设置为'/存储/模拟/0/…';,java,c#,android,xamarin,xamarin.forms,Java,C#,Android,Xamarin,Xamarin.forms,我正在获取手机上的媒体(使用ContentResolver),但返回的路径为/storage/emulated/0/…,并尝试将其用于mediaPlayer.SetDataSource()生成Java.IO.FileNotFoundException。我意识到这条路径可能不是一条真正的路径,但如何从这条路径中获得真正的路径呢 当项目文件夹中有资产时,MediaPlayer工作正常。但我无法让它与其他文件一起工作。我已经为读取外部存储设置了权限 虽然我宁愿用C#来回答,但用Java来回答可能就足够

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

当项目文件夹中有资产时,
MediaPlayer
工作正常。但我无法让它与其他文件一起工作。我已经为
读取外部存储设置了权限

虽然我宁愿用C#来回答,但用Java来回答可能就足够了

编辑

我见过一些处理类似问题的答案,但它们都假设我有一个
Uri
。而上面的方法返回一个字符串。我还没有成功地将其转换为Uri,因此我甚至无法测试这些解决方案。

访问


您可以了解如何从中获取实际路径。

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


别忘了在清单文件中添加权限

“我意识到这个路径可能不是真正的路径”--
/storage/emulated/0/
肯定没有什么问题。文件是否存在是另一回事。“我已经为READ_EXTERNAL_STORAGE设置了权限。”--我不知道Xamarin如何处理运行时权限,但您很可能也需要它。还请注意,您使用的方法不适用于所有介质(例如,可移动存储上的介质)。@Commonware它不适用于可移动介质。这是我用USB电缆和Windows资源管理器放在手机上的文件。通过问题中提到的方法,路径返回为
Data
。那可能有什么问题呢?我说有可能。我不明白。正如我在问题中所说,我已经设置好了。“我已经设置好了”--如果“设置”是指“你安排在应用程序清单中获取它”,这是不够的。“我还没有成功地将其转换为Uri”——在Java中,这将是
Uri.fromFile(新文件(某物))
,其中
something
是一个
字符串,包含基于
/storage/emulated/0/
的值。不过,这不会改变你的结果。
String path= Environment.getExternalStorageDirectory()+"/yourFolder/";