我正在尝试将bmp保存到我的C++安卓应用程序中(我正在使用铬项目)。
FILE* fp = fopen("/myimage.bmp", "wb"); // result: fp==NULL, errno==30
FILE* fp = fopen("/Pictures/myimage.bmp", "wb"); // result: fp==NULL, errno==2
电话是Nexus5x没有sdcard。设置了android.permission.WRITE_EXTERNAL_STORAGE
和android.permission.WRITE_INTERNAL_STORAGE
。
看起来我使用的是无效路径吗?哪条路径是有效的?这是一个调试输出,所以我需要任何能够工作的路径。
发布于 2017-10-01 11:59:58
如果要访问应用程序的内部存储,则应用程序存储的根路径是
String ROOT_PATH = "/data/data/" + "com.your.package.name" + "/";
因此,如果要从内部存储中访问您的文件,您必须像这样声明文件路径。
FILE* fp = fopen(ROOT_PATH + "myimage.bmp", "wb");
但这并不能像@CommonsWare建议的那样确保您的问题得到解决,
“应用程序存储的根路径是”--该路径因操作系统版本、用户帐户(主用户帐户与次要帐户)以及设备制造商的不同而不同。从来没有过哈德科德路径。如果NDK代码需要写到某个位置,那么Java代码应该在路径中传递,该路径是从方法(例如,getFilesDir())派生的。
所以我在你的问题中再次提到他的评论。
没有超级用户级别的权限,就不能在任何基于Linux的系统上写入/写入。“我正在与铬项目合作”--然后找出铬写文件的地方,然后在那里写你的文件。
这些是@CommonsWare提出的一些有价值的见解,可能对您有所帮助。谢谢。
https://stackoverflow.com/questions/46512110
复制相似问题