我的意思是这个问题中的以下内容:
内部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
来编写内容。