2016-06-07 67 views
1

在模擬器上運行應用程序時,系統在嘗試在文件夾「/ home/cocadas/Workspace/android-project/JNIAppSample」中創建目錄的cpp代碼時報告錯誤。未能在安卓應用程序中使用NDK創建文件夾

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中調試報告導致= -1執行結果= MKDIR(thisEventParms.eventDirectory,0700)之後;而且,調試報告thisEventParms.eventDirectory = 「/ home/cocadas/Workspace/android-project/JNIAppSample」,這是預期的。

經過一番研究,我在清單中添加一個權限如下所示:

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

但它仍然給結果= -1

的任何意見或建議?

回答

2

我想android模擬器具有與任何android設備相同的結構。

因此,你的模擬器中不存在/home/cocadas...etc。

如果響應是-1,通常看起來你的路徑是不可寫的。

總之,可寫路徑可以是「/ sdcard/your_directory」。當然你需要添加你上面寫的權限。

如果你想獲得一個可寫的路徑,但你的apk內部使用此代碼。

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

乾杯。

+0

謝謝!我試過了這個方法。它成功返回一個目錄。 – Hong