gpt4 book ai didi

java - 模拟器上的 Android SD 卡写入失败并出现 IOException EROFS(只读文件系统),具有正确的权限

转载 作者:太空狗 更新时间:2023-10-29 16:43:52 26 4
gpt4 key购买 nike

我的 android 应用无法将文件写入 AVD 的 SD 卡,代码如下:

    File root = Environment.getExternalStorageDirectory();

Log.w("sdcard", "root.canWrite() = " + root.canWrite());

try {
File myFile = new File(root + File.pathSeparator + "mysdfile.txt");
myFile.createNewFile();
FileOutputStream fOut = new FileOutputStream(myFile);
OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
myOutWriter.append("testing testing 123");
myOutWriter.close();
fOut.close();
} catch (IOException e) {
Log.w("ExternalStorage", "Error writing", e);
}

root.canWrite() 返回 true,然后引发此异常:

java.io.IOException: open failed: EROFS (Read-only file system)

list 文件具有 WRITE_EXTERNAL_STORAGE 权限( list 的直接子级):

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

我还尝试使用以下方法将 SD 卡重新安装到 AVD 外壳中:

mount -o remount rw /mnt/sdcard

...但无济于事。 AVD 还设置了“SD 卡支持”标志。不确定从这里开始做什么,有什么想法吗?

最佳答案

从 Honeycomb 开始,Android 设备默认不允许第三方应用程序写入外部可移动存储。您可以通过启动 adb shell 来检查这一点,转到/system/etc/permissions/platform.xml,然后查找这一行:

<permission name="android.permission.WRITE_EXTERNAL_STORAGE" >
<group gid="sdcard_rw" />
</permission>

第三方应用程序不属于“sdcard_rw”组,而是属于“media_rw”。如果您的手机已获得 root 权限(您的模拟器应该已获得 root 权限),您可以修改 platform.xml 文件以添加具有此权限的另一个组。它应该看起来像这样:

<permission name="android.permission.WRITE_EXTERNAL_STORAGE" >
<group gid="sdcard_rw" />
<group gid="media_rw" />
</permission>

一些手机上仍有 SD 卡插槽的制造商(我知道三星有)会自行修复此问题,但即使是 Nexus 7 或 GNex 也没有默认修复此问题。

关于java - 模拟器上的 Android SD 卡写入失败并出现 IOException EROFS(只读文件系统),具有正确的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13337196/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com