android - 无法使用 NDK 在 Android 应用程序中创建文件夹

标签 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调试报告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/

相关文章:

Android 应用程序无法加载 native 库

通过 manifest.plist 的 iOS 分发 - 在 url 字符串中使用查询字符串参数?

android - 当我强行关闭我的应用程序时服务停止。我怎样才能使服务保持不变?

windows - WinXP和Win7下的Delphi app manifest文件问题

java - GSON解析前如何给对象添加自定义字段

java - 返回 native 字节缓冲区的 Java 方法的 JNI GetMethodID

安卓NDK : Infinite Loop Not Being Called Infinitely

android - 获取 Android Wi-Fi 热点/网络共享/AP 的 MAC 地址

java - 如何使用 playTogether 顺序播放 ObjectAnimator

android - 无法在android中解决ANDROID_LOG_DEBUG