您好,登錄后才能下訂單哦!
本案例中編寫 android app中對應的jni函數
static native Student getStudent();
jni中獲取自定義的類函數描述定向總結
定義一個char *指向自定義類
1、返回類型:jobject
2、獲取自定義的類
3、通過自定義類的構造函數在jni中構建jobject類:獲取方法的域id的描述符填寫"<init>"
4、jni回調app中的特定方法來設置自定義對象
或者不使用回調來設置對象屬性;set***Field
5、最后返回jobject對象
完整代碼
const char * jnistudentname = "com/jniacpp/Student"; jobject getStudent(JNIEnv *env, jobject thiz){ jclass stuClass = env->FindClass(jnistudentname); //取得構造方法的域id jmethodID constuctId = env->GetMethodID(stuClass, "<init>", "()V"); // 構建obj對象 jobject stuObj = env->NewObject(stuClass, constuctId); //取得特定方法的域id jmethodID setStudentId = env->GetMethodID(stuClass, "setStudent", "(ILjava/lang/String;Z)V"); //調用app中的setStuudent函數 env->CallVoidMethod(stuObj, setStudentId, "110917010", "mrzhang", true); /* //取得各個屬性的域id; jfieldID nameID = env->GetFieldID(stuClass, "name", "Ljava/lang/String;"); jfieldID idID = env->GetFieldID(stuClass, "id", "I"); jfieldID isBoyID = env->GetFieldID(stuClass, "isBoy", "Z"); env->SetIntField(stuObj, nameID, 21); env->SetObjectField(stuObj, nameID, env->NewStringUTF("zhang sir")); env->SetIntField(stuObj, isBoyID, true); */ return stuObj; }
參考電子書
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。