【问题标题】:How To Add Media To MediaStore on Android 4.4 KitKat SD Card With Metadata如何在带有元数据的 Android 4.4 KitKat SD 卡上将媒体添加到 MediaStore
【发布时间】:2014-03-31 19:43:51
【问题描述】:

背景:在 Android 4.4 中,Google 决定应用应该not have write access to SD cards。

但是,应用可以写入 /SDCard/Android/data/App Package Name。

这就是我所做的。我已将 MP3 文件写入 /Android/data/。然后我希望这个 MP3 文件显示在 Android 音乐播放器中。

我已经尝试了以下...

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" +文件路径)));

和....

MediaScannerConnection.scanFile(这个, 新字符串 [] { file.toString() },新字符串 [] {“音频/*”}, 新的 MediaScannerConnection.OnScanCompletedListener() { 公共无效 onScanCompleted(字符串路径,Uri uri){ Log.i("ExternalStorage", "已扫描" + 路径 + ":"); Log.i("外部存储", "-> uri=" + uri); } });

还有……

ContentResolver.requestSync(CreateSyncAccount(context), MediaStore.AUTHORITY, null);

这两种方法都会将文件作为文件添加到 MediaStore,其 URI 类似于 content://media/external/file/xxxxx

但是,该文件不会作为音频添加。我可以更新 MediaStore 以将文件声明为音频,但未导入文件元数据。

除了编写我自己的标签阅读器之外,我怎样才能让媒体扫描仪扫描文件并插入元数据,就像它在内部存储器和前 KitKat SD 卡上所做的那样?

【问题讨论】:

  • 你试过类似this的东西吗?我认为 ACTION_MEDIA_SCANNER_SCAN_FILE 可能会有所帮助,如果没有,您可以获取 MediaStore.Audio 的 ContentProvider 并在其上调用新的 requestSync 方法。只是我的想法,我没有尝试过这些。
  • 感谢您的评论。这些解决方案都不起作用。问题是让 Android 像在 SD 卡上一样填充元数据。稍微更新了问题以使其更清楚。
  • 因为“/SDCard/Android/data/App Package Name”是您的应用程序私有文件夹,不允许其他非超级用户应用程序从其他 Android 音乐播放器读取,即使他们在媒体数据库中。在 4.4 之前的 android 中,可以允许其他应用程序从某个私有文件夹中读取。但这在 android-4.4 及更高版本中不再适用。
  • @Justin 你找到解决方案了吗?如果没有,还有其他解决方案可以解决这个问题吗?

标签: android android-sdcard android-4.4-kitkat audio-player android-mediascanner android-music-player


【解决方案1】:

我已经放弃寻找解决方案。我认为没有,所以我提交了issue report。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多