当前位置: 首页 > 面试题库 >

从JNI获取Java中使用的字符串

袁元明
2023-03-14
问题内容

JAVA代码

这是我用 JAVA
编写的代码的一部分,如您所见,这是一个JC_VerificationCandidate有两个String成员enrollmentID和的类seedIndex

class JC_VerificationCandidate {

    public JCDSM_VerificationCandidate( String enrollmentID, String seedIndex ) {
        this.enrollmentID = enrollmentID;
        this.seedIndex    = seedIndex;
    }

    public String enrollmentID;
    public String seedIndex;
}

这是我有本机方法的主类,从那里我调用了本机方法。

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[] );
}

如您所见,我用一个对象创建数组并将其提供给我的函数。

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

JNI代码

我怎样才能得到这两个字符串enrollmentIDeedIndex我已经从Java应用程序中设置并存储在jVerificationCandList

JNIEXPORT jint JNICALL Java_com_Dsm_Test_DSM_JDSMVerify( JNIEnv* env, jobject thiz, jint jhDevice, jstring jurlID,
                                                         jbyteArray jInputInfo, jobjectArray jVerificationCandList ) {


}

问题答案:

以下代码应允许您访问字段 enrollmentID 。使用JNI
String函数
来读取/操作它们。

// 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);


 类似资料:
  • 问题内容: 我有字符串: 如何找到这些字符串中的数字? 也许与功能: 例如: 最好的方法可能是正则表达式,但是如何在示例中使用它呢?也许没有正则表达式? 问题答案: 您可以为此使用正则表达式。该 转义序列将匹配的主题字符串中的所有数字。 例如:

  • 我想让Selenium与Chromedriver一起识别并导入一行html文本到Webelement变量中。 给定这个HTML: 任何洞察力都是非常感谢的。

  • 我是Java的新手,我正在尝试从一个多行的输入中获取一个字符串。 例如,一个字符串=“the quick brown fox jumps over the lazy dog.the quick brown fox jumps over the lazy dog.the quick fox jumps over the lazy dog.”输入如下: 敏捷的棕色狐狸跳过懒惰的狗。 敏捷的棕色狐狸跳过

  • 本文向大家介绍从Java字符串中获取所有数字,包括了从Java字符串中获取所有数字的使用技巧和注意事项,需要的朋友参考一下 假设以下是我们的字符串。 为了仅显示上述字符串中的数字,我们使用了该方法并将所有字符替换为空。 以下是最后的示例,该示例仅显示字符串中的数字。 示例 输出结果

  • 问题内容: 我有一个Java程序,旨在考虑xml dom并将其写入字符串。我正在使用这些软件包:和 所以我有,,对象… 有没有办法在一个调用中获取代表我的xml dom的字符串? 问题答案: 它不是一个电话,而是: setOutputProperty方法使字符串输出更漂亮,因此可以将其取出。

  • 我有这样一个JSON文件: 我需要得到回应。使用者用户名值。我试过这个: 但我得到了这个错误: 怎么修,肯定有办法,就是找不到。