在模拟器上运行应用程序时,系统报告错误,而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调试报告结果= -1;另外,调试报告thisEventParms.eventDirectory =“/ home / cocadas / Workspace / android-project / JNIAppSample”,其中是预期的。
经过一些研究,我在清单中添加了一个权限,如下所示:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
但它仍然给出结果= -1
有任何意见或建议吗?
答案 0 :(得分:3)
我猜Android模拟器的结构与任何Android设备相同。
所以,你的模拟器中没有/home/cocadas...etc。
如果响应为-1,通常看起来您的路径不可写。
总之,可写路径可以是&#34; / sdcard / your_directory。&#34;当然,您需要添加上面写的权限。
如果你想得到一个可写的路径但是在你的apk里面使用这个代码。
String config_path=m_context.getApplicationContext().getFilesDir().toString();
干杯。