2017-01-01 66 views
0

我正在使用here(使用ContentResolver)在手機上獲取媒體,但返回的路徑格式爲/storage/emulated/0/...,並試圖將其用於​​會得到Java.IO.FileNotFoundException。我意識到這條道路可能不是一條真正的道路,但我如何從這條道路上獲得真正的道路?將MediaPlayer.SetDataSource()設置爲'/ storage/emulated/0/...'

當我在項目文件夾中有一個資產時,MediaPlayer工作正常。但我無法讓它與其他文件一起工作。我已經爲READ_EXTERNAL_STORAGE設置了權限。

雖然我寧願在C#中有一個答案,但Java中的答案可能就足夠了。

編輯

我已經看到了一些答案,處理類似的事情,但他們都認爲我有一個Uri。上面的方法返回一個字符串。我還沒有成功將它轉換爲Uri,所以我甚至無法測試這些解決方案。

+0

「我意識到,這條道路是可能不是真正的路徑「 - 」/ storage/emulated/0 /'肯定沒有錯。文件是否存在是另一回事。 「我已經設置了READ_EXTERNAL_STORAGE的權限。」 - 我不知道Xamarin如何處理運行時權限,但您最需要的也是。另請注意,您使用的方法不適用於所有媒體(例如,可移動存儲上的媒體)。 – CommonsWare

+0

@CommonsWare它不在可移動媒體上。這是一個使用USB電纜和Windows資源管理器打開電話的文件。並且通過問題中提到的方法將路徑作爲'Data'返回。那麼可能是什麼問題? – ispiro

+0

我提到[運行時權限](https://developer.android.com/training/permissions/requesting.html)是一種可能性。 – CommonsWare

回答

0

試圖通過強似硬編碼值這個(/存儲/模擬/ 0 /)

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

不要忘了在清單文件中添加權限