Вот такой вариант написал, только проблема в том выдает не вызывающий сервис а Application, что необходимо заменить чтобы показывало именно вызывающий класс?
jobject getContext(JNIEnv *env) {
jclass activityThreadClz = (*env)->FindClass(env, "android/app/ActivityThread");
jmethodID currentActivityThreadMtd = (*env)->GetStaticMethodID(env,activityThreadClz,
"currentActivityThread",
"()Landroid/app/ActivityThread;");
jobject activityThread = (*env)->CallStaticObjectMethod(env,activityThreadClz,
currentActivityThreadMtd);
jmethodID getApplicationMtd = (*env)->GetMethodID(env,activityThreadClz,
"getApplication",
"()Landroid/app/Application;");
return (*env)->CallObjectMethod(env, activityThread, getApplicationMtd);
}
jstring class_name(JNIEnv *env) {
jclass context_class = (*env)->FindClass(env,"java/lang/Class");
jmethodID mid = (*env)->GetMethodID(env, context_class, "getClass", "()Ljava/lang/Class;");
jobject clsObj = (*env)->CallObjectMethod(env,getContext(env), mid);
context_class = (*env)->GetObjectClass(env,clsObj);
mid = (*env)->GetMethodID(env, context_class, "getName", "()Ljava/lang/String;");
jstring strObj = (jstring)(*env)->CallObjectMethod(env,clsObj, mid);
return strObj;
}
jint JNI_OnLoad(JavaVM* vm, void* reserved)
{
JNIEnv *env;
if(((*vm)->GetEnv( vm, (void **)&env, JNI_VERSION_1_6 ))!= JNI_OK)return -1;
jstring package_name = class_name(env);
char *str = (*env)->GetStringUTFChars(env,package_name, NULL);
LOGI("class->%s", str);
(*env)->ReleaseStringUTFChars(env,package_name, str);
}