Как указать текущий рабочий путь в jni - PullRequest
2 голосов
/ 27 сентября 2011

У меня есть Java-приложение для Android (TestApp). Из моего TestApp я вызываю функцию из кода jni:

JNIEXPORT jint JNICALL Java_com_app_test_testApp_CreateFile( JNIEnv* env, jobject thiz, jobject jclass ) {
    pFile = fopen ("/NDK_Log.txt", "a+");
    // Get's current date time and print it in the log file.
    dateTime    = time(NULL);
    currentTime = ctime( &dateTime );
    fprintf( pFile, "\n\n--------------------------------------------------------------------------\n" );
    fprintf( pFile, "\t\t\t\t\t\t %s", currentTime );
    fprintf( pFile, "--------------------------------------------------------------------------\n\n" );
    fprintf( pFile, ">>> Enter Initialize <<<\n" );
    #endif

    return 0;
}

Я хочу создать файл в папке «data / data / com.app.test.testApp /», но не могу, что я делаю неправильно, и как я могу указать текущий рабочий каталог или указать текущий путь приложения

Ответы [ 2 ]

1 голос
/ 27 сентября 2011

Вы не можете полагаться на то, что fopen использует «текущий рабочий каталог».

Во внутренней памяти устройства вы можете получить доступ только к файлам в папке данных вашего приложения. И вы можете получить личную папку вашего приложения следующим образом:

String dir = getPackageManager().getPackageInfo("com.example.app", 0).applicationInfo.dataDir;

Это будет где-то в папке / data / data.

0 голосов
/ 28 сентября 2011

Android предоставляет getcwd () , но я не думаю, что это то, что вам действительно нужно.

Как уже упоминалось, вы захотите получить часть базового пути из Java. Вы можете реализовать метод в Java, чтобы получить путь и вызвать его из C / C ++ через JNI, если вам нужно.

...