Android NDK 开发 C++调用java数组 以及方法

1.编写java ToastPrivate.java

public class ToastPrivate {

private String[] name;

public static String getTime() {
    UIUtils.showToast("getTime");
    return String.valueOf(System.currentTimeMillis());
}

public void sayHello(String msg) {
    LogUtils.d("sayHello");
    UIUtils.showToast(name[1]);
}

}

2.cpp 编写代码

JNIEXPORT void JNICALL
Java_com_ucsmy_ycfinance_modules_set_AboutUSActivity_TestProvider(JNIEnv *env, jobject instance) {

jclass TestProviderClass = env->FindClass("com/ucsmy/ycfinance/modules/set/ToastPrivate");
jmethodID methodID = env->GetStaticMethodID(TestProviderClass, "getTime",
                                            "()Ljava/lang/String;");
//env->CallStaticObjectMethod(TestProviderClass, methodID);


//默认构造函数,不传参数
jmethodID construction_id = env->GetMethodID(TestProviderClass, "<init>", "()V");

//通过NewObject来创建对象
jobject mTestProviderObject = env->NewObject(TestProviderClass, construction_id);

jmethodID sayHelloMethodID = env->GetMethodID(TestProviderClass, "sayHello",
                                              "(Ljava/lang/String;)V");

//jclass class  = env->GetObjectClass(mTestProviderObject);
//jclass clazz, const char* name, const char* sig
//jfieldID fieldID = env->GetFieldID(TestProviderClass,"name","Ljava/lang/String;");
jfieldID fieldID = env->GetFieldID(TestProviderClass, "name", "[Ljava/lang/String;");

//jobject obj, jfieldID fieldID, jobject value
jstring stri = env->NewStringUTF("天天上上,好好学习");
jclass stringClass = env->FindClass("java/lang/String");

//jsize length, jclass elementClass, jobject initialElement
jobjectArray objectA = env->NewObjectArray(3, stringClass, stri);

jstring stri1 = env->NewStringUTF("連軍一定要 天天上上,好好学习");

//jobjectArray array, jsize index, jobject value
env->SetObjectArrayElement(objectA,1,stri1);

env->SetObjectField(mTestProviderObject, fieldID, objectA);
env->CallVoidMethod(mTestProviderObject, sayHelloMethodID, stri);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值