2012-05-21 4 views
6

Bunu test ettiğim yeri belirtmek için, HTC Desire S, Android 2.3.5 ve ndk-r8.android_app-> activity-> internalDataPath hala NULL içinde 2.3.8 NDK r8

ndk-r7b'de ve ndk-r8'de, her ikisi de NULL olduğu gibi android_app-> activity-> internalDataPath veya externalDataPath kullanarak yerel okuma yazma dizinlerine erişmekte sorun yaşıyorum. Bu önceki sürümlerinde nakledilmiş ve bir güncelleme bu mesaja göre düzeltmek için gittiğini görürüz: -

Şimdi belki de bu Ice Cream Sandwich içinde onarılır ama bu benim aracı olarak ideal olmaktan uzak

How do I write to the internal storage file system with NativeActivity?

zincir güncelleme olmayanları yakalamak için geriye doğru uyumluluğu destekler. Yani benim sorum, bilinen bir düzeltme var mı, yoksa "/data/data/com.example.mytest/files/somefile.dat" gibi dizin yapısını, düzeltilene kadar el ile eklemek zorunda mıyım?

+0

Hiç bu konuya bir çözüm bulmak mı? –

cevap

4

Java kullanmadan NDK aşağıdaki çalışır:

const char* path = app->activity->internalDataPath; 
if (!path) { 
    JNIEnv* jni; 
    app->activity->vm->AttachCurrentThread(&jni, NULL); 

    jclass activityClass = jni->GetObjectClass(app->activity->clazz); 
    jmethodID getFilesDir = jni->GetMethodID(activityClass, "getFilesDir", "()Ljava/io/File;"); 
    jobject fileObject = jni->CallObjectMethod(app->activity->clazz, getFilesDir); 
    jclass fileClass = jni->GetObjectClass(fileObject); 
    jmethodID getAbsolutePath = jni->GetMethodID(fileClass, "getAbsolutePath", "()Ljava/lang/String;"); 
    jobject pathObject = jni->CallObjectMethod(fileObject, getAbsolutePath); 
    path = jni->GetStringUTFChars((jstring)pathObject, NULL); 

    jni->DeleteLocalRef(pathObject); 
    jni->DeleteLocalRef(fileClass); 
    jni->DeleteLocalRef(fileObject); 
    jni->DeleteLocalRef(activityClass); 

    app->activity->vm->DetachCurrentThread(); 
} 
+0

Teşekkürler phoenix, buna geri dönme şansım olmadı, ama evet, ana veri yolunu kapmak için JNI'yi kullanarak sağdaki yol ve aynı zamanda onu nasıl tamir ettim. – Dev2rights