首页 > 解决方案 > android 将 ExternalStorageProvider 转换为 MediaProvider

问题描述

我在将本地音频文件嵌入到 WebView 内的“标签”中时遇到问题(我在那里使用 Ionic)。如果在选择器意图中用户从 MediaProvider(音频快捷方式)中选择音频文件,则一切正常,但如果用户进入他们的 SDCard,它会中断,我无法在 WebView 部分正确映射它。

例如,在 SDCard -> 音乐中的文件

这是为 SDCard 返回的:

name: "[MemoryCard] DragonBall GT - OP1 - Dan Dan Kokoro Hikareteku"
nativePath: "file:///sdcard/Music/[MemoryCard] DragonBall GT - OP1 - Dan Dan Kokoro Hikareteku.mp3"
uri: "content://com.android.externalstorage.documents/document/326E-6BB3%3AMusic%2F%5BMemoryCard%5D%20DragonBall%20GT%20-%20OP1%20-%20Dan%20Dan%20Kokoro%20Hikareteku.mp3"

这对于 MediaProvider:

name: "Dan Dan Kokoro Hikareteku"
nativePath: "file:///storage/326E-6BB3/Music/[MemoryCard] DragonBall GT - OP1 - Dan Dan Kokoro Hikareteku.mp3"
uri: "content://com.android.providers.media.documents/document/audio%3A14362"

所以,我想在处理选择器响应的本机端解决这个问题,并将文件映射com.android.externalstorage.documents到,com.android.providers.media.document但我找不到任何方法,这可能吗?

编辑我只是使用 webview 框架https://capacitorjs.com/docs/basics/utilities#convertFileSrc的功能转换 uri 。因此,如果我可以将 SD 卡 uri 映射到提供商媒体 uri,它应该可以工作。另外,我正在尝试支持 Android 6+

标签: android

解决方案


推荐阅读