在我的中间件应用程序中,我需要在执行期间创建多个目录和文件,但由于权限错误而无法执行此操作。
我创建了一个简单的程序来复制场景:
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int main()
{
struct stat st = {0};
if (stat("/mnt/demo_folder", &st) == -1) {
mkdir("/mnt/demo_folder", 0700);
}
return 0;
}
当我运行它时,我得到unable to create directory /mnt/demo_folder : Read-only file system
。
解决此问题的一种方法如下。
手动,我可以在设备上运行mount -o remount ,rw /
一次,我的应用程序将来永远不会有权限问题。但由于我无法访问最终用户设备,因此我可以在应用程序本身的开头使用system()
执行此命令。但这是正确的方法吗?任何人都可以在这种情况下指出最佳实践。
答案 0 :(得分:0)
不,这不是正确的做法。
最终用户设备系统文件夹将处于只读状态。通过系统运行mount命令会使设备处于非常脆弱的状态,我不确定android是否允许你运行mount
命令。
正确的做法是 -
WRITE_EXTERNAL_STORAGE
]。因此用户将意识到此应用将写入设备存储。