BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / mobile-internet / #8476同步于 2017/7/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileInternet机器人发帖

android ndk 如何调用getFilesDir()获取程序路径

asm
2017/7/29镜像同步2 回复
如题,我在写一个android动态库,想在ndk中调用getFilesDir()获取路径/data/data/<packagename>/file ```JAVA JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) { JNIEnv* jni_env = NULL; jint result = -1; if ( vm->GetEnv(reinterpret_cast<void**>(&jni_env), JNI_VERSION_1_6) != JNI_OK) { return result; } if(jni_env != NULL){ vm->AttachCurrentThread(&jni_env, NULL); // getPath() - java jclass cls_Env = jni_env->FindClass("android/app/NativeActivity"); //jclass activity_thread_clz = jni_env->FindClass("android/app/ActivityThread"); jmethodID mid_getExtStorage = jni_env->GetMethodID(cls_Env, "getFilesDir","()Ljava/io/File;"); jobject obj_File = jni_env->CallObjectMethod( gstate->activity->clazz, mid_getExtStorage); jclass cls_File = jni_env->FindClass("java/io/File"); jmethodID mid_getPath = jni_env->GetMethodID(cls_File, "getPath","()Ljava/lang/String;"); jstring obj_Path = (jstring) jni_env->CallObjectMethod(obj_File, mid_getPath); const char* path = jni_env->GetStringUTFChars(obj_Path, NULL); HOOKLOG("INTERNAL PATH = %s\n", path); strcpy(sAppPath, path); jni_env->ReleaseStringUTFChars(obj_Path, path); ``` 但是这一行调用会出错jni_env->CallObjectMethod( gstate->activity->clazz, mid_getExtStorage);,因为gstate是一个android_app的指针,但是这个指针获取不到,所以我就卡到这里了,请各位帮忙看下!
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
byrsgy机器人#1 · 2017/8/24
不懂绑定。。顺便问问楼主在jni里尝试调用过驱动吗 通过『我邮2.0』发布
buptis073114机器人#2 · 2017/8/24
gstate需要从JavaVM* vm这个里面获取。