如何将字符串转换为 uri 而不会出现语言错误?

我有一个Mediametadatareview,但是当我使用setDataSource()get out 时,我注意到错误是由于具有该名称/storage/sdcard/NhạcCuảTôi.mp3的文件(文件名是越南语)引起的。如何将该文件更改为真正的 URI?


这是我的代码


 mediaMetadataRetriever = new MediaMetadataRetriever();       

 Uri u = Uri.parse(filedata);

 mediaMetadataRetriever.setDataSource(MainAC.this, u);

 String gene= mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_GENRE);

它坠毁在 mediaMetadataRetriever.setDataSource(MainAC.this, u);


我认为错误是因为文件名有重音,有什么方法可以帮助将字符串转换为 URI 并取消标记?因为如果我删除带有该标志的文件,则应用程序可以正常工作


这是 LOGCAT :


 java.lang.RuntimeException: Unable to start activity ComponentInfo{dragonrocky.music/dragonrocky.music.MainAC}: java.lang.RuntimeException: setDataSource failed: status = 0x80000000

    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2505)

    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2577)

    at android.app.ActivityThread.access$1000(ActivityThread.java:164)

    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1462)

    at android.os.Handler.dispatchMessage(Handler.java:102)

    at android.os.Looper.loop(Looper.java:160)

    at android.app.ActivityThread.main(ActivityThread.java:5541)

    at java.lang.reflect.Method.invoke(Native Method)

    at java.lang.reflect.Method.invoke(Method.java:372)

    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:964)

    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759)

    at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:107)

 Caused by: java.lang.RuntimeException: setDataSource failed: status = 0x80000000

    at android.media.MediaMetadataRetriever.setDataSource(Native Method)

    at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:71)

    at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:165)

    at dragonrocky.music.MainAC.loadAudio(MainAC.java:519)

    at dragonrocky.music.MainAC.onCreate(MainAC.java:156)



忽然笑
浏览 226回答 2
2回答

千万里不及你

不要在Uri这里使用 a 。要么使用该setDataSource(String)方法并直接传递您的路径,要么自己打开文件并使用setDataSource(FileDescriptor).

紫衣仙女

试试这个Uri myUri = Uri.parse("/storage/sdcard/NhạcCuảTôi.mp3");
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java