我正在修改AudioSystem.cpp代码,该代码是Android Framework中运行的mediaserver进程的一部分。我添加了几行代码,以便编写一个位于Nexus 5手机的SD卡中的文件。
我使用以下代码:
int fd = open("/mnt/shell/emulated/0/file.txt", O_RDWR | O_APPEND | O_CREAT, 0666);
if(fd > -1) {
__android_log_print(ANDROID_LOG_DEBUG, "gxp18", "Writing to SDCARD");
write(fd, "1", strlen("1"));
write(fd, "\n", 1);
close(fd);
}
我总是得到fd = -1。我不知道为什么会失败。在手机FS中,我可以看到只有root和sdcard_r可以访问该文件夹:
shell@hammerhead:/mnt/shell/emulated $ ll
drwxrwx--x root sdcard_r 1970-07-04 21:05 0
有趣的是,sdcard的符号链接被声明为世界可读和可写:
shell@hammerhead:/ $ ll
lrwxrwxrwx root root 1970-07-04 21:04 sdcard -> /storage/emulated/legacy
shell@hammerhead:/storage/emulated $ ll
lrwxrwxrwx root root 1970-07-04 21:04 legacy -> /mnt/shell/emulated/0
我完全迷失了。为什么我在AudioSystem.cpp中的写入总是失败?
提前致谢;)