Android JNI的初步使用--3 JNI調(diào)用java

Android JNI的初步使用--2 動(dòng)態(tài)加載
對(duì)于JNI的使用光java調(diào)用JNI方法肯定是不夠用的,我們有時(shí)候也需要使用JNI調(diào)用java中的參數(shù)和方法。

一.JNI中非靜態(tài)java對(duì)象的創(chuàng)建,參數(shù)賦值,方法調(diào)用

java中的類方法
public class Test {
    String paramStr;
    static String staticParam;

    public Test setParamStr(String paramStr) {
        this.paramStr += paramStr;
        return this;
    }

    public String getParamStr() {
        return paramStr;
    }

    public static void setStaicParam(String str) {
        staticParam = str;
    }
}
1.獲取Class
jclass Test = env->FindClass("com/test/Test");
2.獲取構(gòu)造方法
jmethodID TestInit = env->GetMethodID(Test, "<init>", "()V");
3.創(chuàng)建java對(duì)象
 jobject test = env->NewObject(Test, TestInit);
4.獲取到j(luò)ava對(duì)象中的參數(shù)
jfieldID paramStr = env->GetFieldID(Test, "paramStr", "Ljava/lang/String;");
5.修改java對(duì)象中的參數(shù)
std::string hello = "JNI參數(shù)賦值";
env->SetObjectField(dragCrash, paramStr, env->NewStringUTF(hello.c_str()));
6.調(diào)用java對(duì)象中的方法
std::string param2 = "JNI參數(shù)方法賦值";
jmethodID setParamStr = env->GetMethodID(Test, "setParamStr", "(Ljava/lang/String;)Lcom/hao/minovel/jni/Test;");
env->CallObjectMethod(dragCrash,setParamStr,env->NewStringUTF(param.c_str()));

二.JNI中的靜態(tài)方法的調(diào)用和靜態(tài)參數(shù)的賦值

1.調(diào)用靜態(tài)方法
jmethodID setStaicParam = env->GetStaticMethodID(Test, "setStaicParam",  "(Ljava/lang/String;)V");
env->CallStaticVoidMethod(Test, setStaicParam, env->NewStringUTF(param.c_str()));
2.給靜態(tài)變量賦值
jfieldID staticParam = env->GetStaticFieldID(Test, "staticParam", "Ljava/lang/String;");
env->SetStaticObjectField(Test, staticParam, env->NewStringUTF(param.c_str()));
env->SetObjectField(test, paramStr, env->NewStringUTF(param.c_str()));
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容