【问题标题】:Fail to create a folder in android app with NDK使用 NDK 在 android 应用程序中创建文件夹失败
【发布时间】:2016-06-08 04:40:41
【问题描述】:

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

Android Studio 调试报告 ​result = -1 after execution result = mkdir(thisEventParms.eventDirectory, 0700);​ 另外,调试报告 thisEventParms.eventDirectory = "/home/cocadas/Workspace/android-project/JNIAppSample",其中预计。

经过一番研究,我在清单中添加了一个权限,如下所示:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

但它仍然给出结果 = -1

有什么意见或建议吗?

【问题讨论】:

标签: android android-ndk manifest


【解决方案1】:

我猜安卓模拟器和任何安卓设备的结构都是一样的。

所以,/home/cocadas...etc 在您的模拟器中不存在。

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

总之,可写路径可以是“/sdcard/your_directory”。当然你需要添加上面写的权限。

如果您想获得可写路径但在您的 apk 内部使用此代码。

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

干杯。

【讨论】:

  • 谢谢!我试过这个方法。它成功返回一个目录。
猜你喜欢
  • 2015-11-13
  • 2012-05-25
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 1970-01-01
  • 2011-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多