在模拟器上运行应用程序时,当 cpp 代码尝试在文件夹“/home/cocadas/Workspace/android-project/JNIAppSample”中创建目录时,系统报告错误。
Java 将调用 JNI cpp 函数来创建目录。
cpp源码如下:
static int createEventDir(void)
{
int result;
int stringLen;
time_t currentTime = time(0);
struct tm * now = localtime(¤tTime);
stringLen = sprintf(thisEventParms.eventDirectory,
ADAN_EVENT_BASE_DIR, now->tm_mon + 1,
now->tm_mday, now->tm_hour,
now->tm_min, now->tm_sec);
if (stringLen > 0)
{
result = mkdir(thisEventParms.eventDirectory, 0700);
}
else
{
// TBD: Error, unable to make event directory
result = -1;
}
return(result);
}
执行result = mkdir(thisEventParms.eventDirectory, 0700)后Android Studio调试报告result = -1;另外,调试报告thisEventParms.eventDirectory = "/home/cocadas/Workspace/android-project/JNIAppSample",其中预计。
经过一番研究,我在 list 中添加了一个权限,如下所示:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
但它仍然给出 result = -1
有什么意见或建议吗?
最佳答案
我猜想 android 模拟器与任何 android 设备具有相同的结构。
因此,/home/cocadas...等在您的模拟器中不存在。
如果响应是-1,通常看起来你的路径是不可写的。
总之,可写路径可以是“/sdcard/your_directory”。当然,您需要添加上面写的权限。
如果你想获得一个可写的路径但在你的 apk 中使用这个代码。
String config_path=m_context.getApplicationContext().getFilesDir().toString();
干杯。
关于android - 无法使用 NDK 在 Android 应用程序中创建文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37687581/