如何在Android 6.0中的外部SD卡中的自定​​义路径中编写文件

时间:2016-08-18 07:22:05

标签: java android file-permissions android-6.0-marshmallow

我的意思是这个问题中的以下内容:

内部SD卡:板载存储设备,其路径可通过调用Environment.getExternalStorageDirectory()

获得

外部SD卡:可以插入设备的microSD卡插槽或从设备的microSD卡插槽中取出的物理microSD卡

我正在开发Android 6.0 Marshmallow。

我听说我们不能在Android Lollipop的外部SD卡中自定义路径写入,但我们可以在Android Marshmallow的外部SD卡中自定义路径写入。

我添加了许可 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 在Android清单中 我还通过调用函数ActivityCompat.requestPermissions(activity, permissionArray, requestCode)来请求运行时权限。

现在。我可以在内部SD卡中读取/写入文件(类似/storage/emulated/0/...的路径) 我的问题是,我无法在外部SD卡中写入文件(像/storage/0000-0000/...这样的路径) 如果我尝试在外部SD卡中写入文件,则会发生以下异常:

java.io.FileNotFoundException: /storage/0000-0000/Pictures/abc.jpg: open failed: EACCES (Permission denied)
    at libcore.io.IoBridge.open(IoBridge.java:452)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:127)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:116)
    ...

我在StackOverflow中搜索过这个问题,但问题/答案都是关于Android 6.0中的运行时权限,这不是我的情况。

如何在Android 6.0中的外部SD卡中的自定​​义路径中编写文件?

修改

要清楚,我所拥有的是要写入的文件的路径(如字符串"/storage/0000-0000/Pictures/abc.jpg"),我可以使用FileOutputStream来编写内容。

0 个答案:

没有答案