我正在尝试将bmp保存到我的C ++ android应用程序中(我正在使用chrome项目)。
FILE* fp = fopen("/myimage.bmp", "wb"); // result: fp==NULL, errno==30
FILE* fp = fopen("/Pictures/myimage.bmp", "wb"); // result: fp==NULL, errno==2
手机是Nexus 5x没有SD卡。 android.permission.WRITE_EXTERNAL_STORAGE
和android.permission.WRITE_INTERNAL_STORAGE
已设置。
看起来我使用的是无效路径?哪条路有效?它是一个调试输出,所以我需要任何可行的路径。
答案 0 :(得分:0)
如果您正在访问应用程序的内部存储,则应用程序存储的根路径为
String ROOT_PATH = "/data/data/" + "com.your.package.name" + "/";
因此,如果从内部存储访问您的文件,您必须声明这样的文件路径。
FILE* fp = fopen(ROOT_PATH + "myimage.bmp", "wb");
但这并不能确保您的问题能够像@CommonsWare建议的那样解决,
“应用程序存储的根路径是” - 路径因人而异 操作系统版本,用户帐户(主要与次要)以及可能的设备 制造商。从来没有硬编码路径。如果NDK代码需要写入 位置,Java代码应该在路径中传递,在那里 派生自方法(例如,getFilesDir())。
所以我在你的问题中再次提到他的评论。
如果没有,您无法在任何基于Linux的系统上写入/ 超级用户级权限。 “我正在与铬项目合作” - 然后找出Chromium写文件的位置,并编写你的文件 那里。
这些是@CommonsWare建议的一些有价值的见解,可能对您有所帮助。谢谢。