【问题标题】:How to convert a string to uri without language error?如何在没有语言错误的情况下将字符串转换为uri?
【发布时间】:2018-08-01 12:03:21
【问题描述】:

我有一个Mediametadatareview,但是当我使用setDataSource() 时,我注意到错误是由于名称为/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)
    at android.app.Activity.performCreate(Activity.java:6093)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2458)
    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) 

谢谢。

【问题讨论】:

  • 请添加错误logcat和代码sn -p
  • 我更正了我的帖子,你能帮帮我吗,谢谢。

标签: java android file uri


【解决方案1】:

试试这个

Uri myUri = Uri.parse("/storage/sdcard/NhạcCuảTôi.mp3");

【讨论】:

  • 但是应用已经停止了
  • 您的媒体文件似乎已损坏,您可以使用某些桌面应用程序或其他媒体播放器检查该文件
【解决方案2】:

不要在这里使用Uri。要么使用setDataSource(String)方法直接传入你的路径,要么自己打开文件使用setDataSource(FileDescriptor)

【讨论】:

  • 使用 LogCat 检查您的错误:stackoverflow.com/questions/23353173/…
  • 好的,我把 LOGCAT 留在了帖子上方,我意识到问题不在文件名上,因为以前的文件名也有重音,而且工作正常
猜你喜欢
  • 2020-11-05
  • 2022-07-07
  • 2021-01-20
  • 1970-01-01
  • 2017-07-12
  • 2017-11-02
  • 2010-11-22
  • 2021-09-19
相关资源
最近更新 更多