JNI 獲取包名
阿新 • • 發佈:2019-02-18
/** * 獲取上下文 * @param env * @return */ jobject getApplication(JNIEnv *env) { jobject application = NULL; jclass activity_thread_clz = env->FindClass("android/app/ActivityThread"); if (activity_thread_clz != NULL) { jmethodID get_Application = env->GetStaticMethodID(activity_thread_clz, "currentActivityThread", "()Landroid/app/ActivityThread;"); if (get_Application != NULL) { jobject currentActivityThread = env->CallStaticObjectMethod(activity_thread_clz, get_Application); jmethodID getal = env->GetMethodID(activity_thread_clz, "getApplication", "()Landroid/app/Application;"); application = env->CallObjectMethod(currentActivityThread, getal); } return application; } return application; }
/** * 獲取包名 * @param env * @return */ jstring getPackageName(JNIEnv *env) { jobject context = getApplication(env); if (context == NULL) { LOGE("context is null!"); return NULL; } jclass activity = env->GetObjectClass(context); jmethodID methodId_pack = env->GetMethodID(activity, "getPackageName", "()Ljava/lang/String;"); jstring name_str = static_cast<jstring >( env->CallObjectMethod(context, methodId_pack)); return name_str; }