为什么Fopen在Nexus5X Android设备(C )上失败
Why fopen fails on Nexus5x android device ( C++ )
我试图将BMP保存到我的C Android应用程序中(我正在与Chromium Project一起工作)。
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,没有SDCARD。设置了android.permission.WRITE_EXTERNAL_STORAGE
和android.permission.WRITE_INTERNAL_STORAGE
。
看起来我正在使用无效的路径?哪个路径有效?这是一个调试输出,所以我需要任何有效的路径。
如果您要访问应用程序的内部存储,则应用程序存储的根路径
String ROOT_PATH = "/data/data/" + "com.your.package.name" + "/";
因此,如果从内部存储中访问文件,则必须像这样声明文件路径。
FILE* fp = fopen(ROOT_PATH + "myimage.bmp", "wb");
但这不能确保您的问题被@Commonsware所建议的解决,
"应用程序存储的根路径是" - 该路径因 OS版本,用户帐户(主要与次要)以及可能的设备 制造商。永远不要硬码路径。如果NDK代码需要写入 位置,Java代码应在路径中通过 源自方法(例如getfilesdir())。
所以我在您的问题中再次提及他的评论。
您无法在没有任何基于Linux的系统上写入/ 超级用户级特权。"我正在与铬项目合作" - 然后找出铬写在哪里,然后写文件 那里。
这些是@commonsware建议的一些有价值的见解,可能会对您有所帮助。谢谢。
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- 如果没有malloc,链表实现将失败
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- 视图中的参数推导失败:take_while
- 链接到自行创建的dll失败
- 指向设备对象成员的指针
- 带有特殊路径部分的"std::filesystem::weakly_canonical"失败
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- gcc和c++17的过载解析失败
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- 在WSL:configure_file上对config_file的每次调用都失败:配置文件时出现问题
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 元数据操作失败LNK2022错误 (8013118D):重复类型中的布局信息不一致 (选择设备参数):(0x020002
- 使用TensorFlow C API时,特定的GPU设备失败
- 为什么Fopen在Nexus5X Android设备(C )上失败
- 在Ubuntu, c++上配置设备ttyUSB0 (Arduino)失败
- 发送IOCTL到Windows设备驱动程序- CreateFile失败
- 远程桌面创建DirectX设备失败
- 试图在目标设备上运行一个交叉编译的可执行文件失败,出现以下错误: