当我尝试写入“/mnt/sdcard/report/”时,我在 Android 上遇到“打开失败:EACCES(权限被拒绝)”。我的第一步是创建不起作用的“报告”文件夹。然后我尝试编写引发上述异常的内容。我已将<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
应用程序标记设置为对等(外部)。当我收到错误时,我正在尝试在模拟器上运行 JUnit 仪器测试。有任何想法吗?代码如下。
if (mReportDir == null) {
if (mContext.getFilesDir() != null) {
mOutputStream = mContext.openFileOutput(fileName, 0);
} else {
mOutputStream = mTargetContext.openFileOutput(fileName, 0);
}
} else {
File f = new File(mReportDir);
if (!f.exists()) {
f.mkdirs();
}
mOutputStream = new FileOutputStream(new File(mReportDir, fileName));
}
mReportDir 等于“/mnt/sdcard/report”,fileName 等于“junit-report.xml”,我相信 f.mkdirs 返回 false 并且永远不会创建该目录。我想知道为什么我的权限被拒绝。我正在尝试重用自定义 JUnit 测试运行器。
我已将 hw.sdCard= yes 添加到 avd 设置。启动后,我进入 shell 并输入 mount:
~$ adb shell
# mount
rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,nosuid,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
none /acct cgroup rw,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,cpu 0 0
/dev/block/mtdblock0 /system yaffs2 ro 0 0
/dev/block/mtdblock1 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev 0 0
同样,我从 Ant 脚本以编程方式启动 AVD。我可以通过编程方式安装 SD 卡吗?