android - 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+
解决方案
推荐阅读
- machine-learning - 可以得到 2 个答案的激活函数是什么?
- javascript - 一旦 TouchableOpacity 消失,如何让它出现在我的屏幕底部?
- java - 如何修改JITSI Flutter插件并导入修改后的包?
- python - 为什么评估量化模型的指标中有一些 1、0 和一些 NAN?
- firebase - Firebase - Firestore 查询报告
- excel - 通过 vba 绘制图表时遇到问题
- reactjs - 反应路由器与 AWS S3 上具有长查询参数的路由不匹配
- excel - Excel 复选框值属性在极少数情况下无法设置
- python - 如何修复或清理损坏的 JSON 文件
- java - Recyclerview 中的 Exoplayer 带有图像和视频,如 instagram,但仅停止最后一个视频,其他视频在 android 中回压后仍在播放