Issue
I would like use this code from JNI
Intent intent = new Intent(this, TestActivity.class);
startActivity(intent);
So far, i wrote the next code but i'm getting error from the constructor with params i guess ?
jclass intentClass = env->FindClass("android/content/Intent");
jstring actionString =env->NewStringUTF("com.test.package.TestActivity");
jmethodID newIntent = env->GetMethodID(intentClass, "<init>", "(Landroid/content/Context;Ljava/lang/String;)Landroid/content/Intent");
jobject intent = env->NewObject(intentClass,newIntent,context,actionString);
jclass activityClass = env->FindClass("android/app/Activity");
jmethodID startActivity = env->GetMethodID(activityClass,"startActivity", "(Landroid/content/Intent;)V");
env->CallVoidMethod( intent, startActivity);
The error:
JNI DETECTED ERROR IN APPLICATION: JNI NewObjectV called with pending exception java.lang.NoSuchMethodError: no non-static method "Landroid/content/Intent;.(Landroid/content/Context;Ljava/lang/String;)Landroid/content/Intent"
The context and actionString params are OK and used somewhere else in code, so could you please help me I'm not familiar with JNI, if i use it , its for security reasons and try to avoid pirac.
Thanks
Solution
Thanks to Michael : The answer working for what i want to do with jobject context from parameter function :
jclass native_context = env->GetObjectClass(context);
jclass intentClass = env->FindClass("android/content/Intent");
jclass actionString = env->FindClass("yourPackage/YourActivity");
jmethodID newIntent = env->GetMethodID(intentClass, "<init>", "(Landroid/content/Context;Ljava/lang/Class;)V");
jobject intent = env->NewObject(intentClass,newIntent,context,actionString);
jmethodID methodFlag = env->GetMethodID(intentClass, "setFlags", "(I)Landroid/content/Intent;");
jobject intentActivity = env->CallObjectMethod(intent, methodFlag, 268435456 );
jmethodID startActivityMethodId = env->GetMethodID(native_context, "startActivity", "(Landroid/content/Intent;)V");
env->CallVoidMethod(context, startActivityMethodId, intentActivity);
Answered By - Julian
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.