Android框架 - 如何让mediaserver进程在SD卡上写入文件?

时间:2015-03-10 00:56:23

标签: c++ file-permissions android-framework

我正在修改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中的写入总是失败?

提前致谢;)

0 个答案:

没有答案