android - 如何从媒体真实路径获取可写的DocumentFile Uri?

标签 android android-5.0-lollipop

我在 Lollipop 遇到了这样的情况:

  1. 由用户授予的目录树(DocumentFile)。
  2. 从媒体提供商检索到的需要修改的音频文件集合。

    Uri mediaUri = Uri.withAppendedPath(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
        "45");
    

那么,如何将流写入这些文件之一?

我想,这个https://stackoverflow.com/a/30514269/615025给出了解决方法。将文件的字节复制到缓存目录,对临时文件进行修改,然后将字节复制回原始文件。

DocumentFile是一种新机制,允许我们修改 Lollipop 中的文件。这与这篇文章how to get contact photo URI的情况不一样。 谢谢

最佳答案

您可以使用 ContentResolver.openOutputStream(Uri) 直接从 Uri 打开输出流 例如,

OutputStream fos;
fos = new BufferedOutputStream(context.getContentResolver().openOutputStream(uri));

可选,openOutputStream接受一个字符串来指定模式。 即

openOutputStream(uri, "w");

写或

openOutputStream(uri, "wa");

追加。

关于android - 如何从媒体真实路径获取可写的DocumentFile Uri?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30293151/

相关文章:

android - 将 Holo Action Bar 保留在 Lollipop 中

android - 如何在 android L 中打开省电模式

android - 在 Android 环境中单击文本框时,页脚导航栏会向上移动

android - 用于消息访问的 Gmail 内容提供程序

java - TextView,不会设置文本

android - 在 TabActivity 内的 ListView 上使用 OnItemClickListener

android - 无法直接在 ADT-1 开发工具包上调试

java - 我的 Java Web 服务返回一个包裹在 html 中的 JSON 字符串,我如何删除 HTML

android - 暂时禁用 Lollipop CheckBox 上的动画

缺少 Android L 电池 historian.par 工具