in functions/testapp/src/android/android_main.cc [66:98]
jclass FindClass(JNIEnv* env, jobject activity_object, const char* class_name) {
jclass class_object = env->FindClass(class_name);
if (env->ExceptionCheck()) {
env->ExceptionClear();
// If the class isn't found it's possible NativeActivity is being used by
// the application which means the class path is set to only load system
// classes. The following falls back to loading the class using the
// Activity before retrieving a reference to it.
jclass activity_class = env->FindClass("android/app/Activity");
jmethodID activity_get_class_loader = env->GetMethodID(
activity_class, "getClassLoader", "()Ljava/lang/ClassLoader;");
jobject class_loader_object =
env->CallObjectMethod(activity_object, activity_get_class_loader);
jclass class_loader_class = env->FindClass("java/lang/ClassLoader");
jmethodID class_loader_load_class =
env->GetMethodID(class_loader_class, "loadClass",
"(Ljava/lang/String;)Ljava/lang/Class;");
jstring class_name_object = env->NewStringUTF(class_name);
class_object = static_cast<jclass>(env->CallObjectMethod(
class_loader_object, class_loader_load_class, class_name_object));
if (env->ExceptionCheck()) {
env->ExceptionClear();
class_object = nullptr;
}
env->DeleteLocalRef(class_name_object);
env->DeleteLocalRef(class_loader_object);
}
return class_object;
}