2016-06-07 1 views
1

에뮬레이터에서 응용 프로그램을 실행하는 동안 cpp 코드가 "/ home/cocadas/Workspace/android-project/JNIAppSample"폴더에 디렉토리를 만들려고하는 동안 시스템에서 오류를보고합니다.NDK가있는 android app에 폴더를 만들지 못했습니다

Java는 JNI cpp 함수를 호출하여 디렉토리를 만듭니다. 또한, 디버그 리포트 thisEventParms.eventDirectory =;

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); 
} 

안드로이드 스튜디오 디버그 리포트 = 결과 -1 결과 = MKDIR (thisEventParms.eventDirectory, 0700)을 실행 한 후 :

CPP에 소스 코드는 다음과 같다 "/ home/cocadas/Workspace/android-project/JNIAppSample"이 예상됩니다. =

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

하지만 여전히 결과를 제공 -1

어떤 의견이나 제안 : 몇 가지 조사 후

, 나는 다음과 같은 매니페스트에 하나의 권한을 추가?

답변

2

안드로이드 에뮬레이터는 모든 안드로이드 장치와 동일한 구조를 가지고 있다고 생각합니다.

그래서 /home/cocadas...etc가 에뮬레이터에 없습니다.

응답이 -1이면 대개 경로가 쓰기 가능하지 않은 것 같습니다.

결론적으로 쓰기 가능한 경로는 "/ sdcard/your_directory"일 수 있습니다. 물론 위에서 작성한 권한을 추가해야합니다.

쓰기 가능한 경로를 얻으려면 apk의 내부에서이 코드를 사용하십시오.

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

환호.

+0

감사합니다. 나는 그 방법을 시도했다. 성공적으로 디렉토리를 반환합니다. – Hong