如何从Media真实路径获取可写的DocumentFile Uri?

时间:2015-05-17 23:23:50

标签: android android-5.0-lollipop

我在Lollipop有一个情况:

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

    Uri mediaUri = Uri.withAppendedPath(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
        "45");
    
  3. 然后,如何将流写入其中一个文件?

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

    DocumentFile是一种新机制,允许我们修改Lollipop中的文件。与此帖how to get contact photo URI不同的情况 感谢

1 个答案:

答案 0 :(得分:2)

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

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

可选地,openOutputStream使用字符串来指定模式。 即

openOutputStream(uri, "w");

写或

openOutputStream(uri, "wa");

追加。