无法使用NDK在Android应用中创建文件夹

时间:2016-06-07 19:17:34

标签: android android-ndk manifest

在模拟器上运行应用程序时,系统报告错误,而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(&currentTime);

  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

有任何意见或建议吗?

1 个答案:

答案 0 :(得分:3)

我猜Android模拟器的结构与任何Android设备相同。

所以,你的模拟器中没有/home/cocadas...etc。

如果响应为-1,通常看起来您的路径不可写。

总之,可写路径可以是&#34; / sdcard / your_directory。&#34;当然,您需要添加上面写的权限。

如果你想得到一个可写的路径但是在你的apk里面使用这个代码。

String config_path=m_context.getApplicationContext().getFilesDir().toString();

干杯。