java jni list,从JNI获取Java中使用的字符串

JAVA Code

Here is some part of my code that I have written in JAVA, As you can see this is a class called JC_VerificationCandidate that have two String members enrollmentID and seedIndex.

class JC_VerificationCandidate {

public JCDSM_VerificationCandidate( String enrollmentID, String seedIndex ) {

this.enrollmentID = enrollmentID;

this.seedIndex = seedIndex;

}

public String enrollmentID;

public String seedIndex;

}

Here is main class where I have native method and from where I called that native method.

public class DsmLibraryTest extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

JCDSM_VerificationCandidate verificationCandidate[] = {new JCDSM_VerificationCandidate( "tom", "anna" )};

dsm.JDSMVerify( 123456, "http:\\www.test_url.com", bytes, verificationCandidate );

}

public native int JDSMVerify(

int someValue1,

String someValue2,

byte[] someValue3,

JC_VerificationCandidate jVerificationCandList[] );

}

As you can see I create array with one object and give it to my function.

JCDSM_VerificationCandidate verificationCandidate[] = {new JCDSM_VerificationCandidate( "tom", "anna" )};

JNI Code

How can I get that two strings enrollmentID, eedIndex that I have set from java application and which are stored in jVerificationCandList ?

JNIEXPORT jint JNICALL Java_com_Dsm_Test_DSM_JDSMVerify( JNIEnv* env, jobject thiz, jint jhDevice, jstring jurlID,

jbyteArray jInputInfo, jobjectArray jVerificationCandList ) {

}

解决方案

The following code should allow you to access the field enrollmentID. Use the JNI String functions to read/manipulate them.

// Load the class

jclass jclass_JCV = env->FindClass(env, "my.package.JC_VerificationCandidate");

jfieldID fid_enrollmentID = env->GetFieldID(env, jclass_JCV, "enrollmentID" , "Ljava/lang/String;");

// Access the first element in the jVerificationCandList array

jobject jc_v = env->GetObjectArrayElement(env, jVerificationCandList, 0);

// get reference to the string

jstring jstr = (jstring) env->GetObjectField(env, jc_v, enrollmentID);

// Convert jstring to native string

const char *nativeString = env->GetStringUTFChars(env, jstr, 0);

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值