JNI c调用Java 返回值为String

    xiaoxiao2021-03-25  129

    Java定义:

    public String getSignatureInfo() { try { PackageInfo packageInfo = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), PackageManager.GET_SIGNATURES); android.content.pm.Signature[] signs = packageInfo.signatures; android.content.pm.Signature sign = signs[0]; byte[] signature = sign.toByteArray(); X509Certificate cert = parseSignature(signature); return getMessageDigest("SHA1", signature); } catch (Exception e) { e.printStackTrace(); } return null; }c代码:

    JNIEXPORT jint JNICALL Java_com_letv_jr_safesignaturelibrary_JrSignature_getCLangString(JNIEnv *env, jobject obj) { //得到类 jclass clazz=(*env)->GetObjectClass(env,obj); if(clazz==0){ return; } //缓存类 targetClass=(jclass)(*env)->NewGlobalRef(env,clazz); if(targetClass==0){ return; } //缓存对象 targetObject=(jobject)(*env)->NewGlobalRef(env,obj); if(targetObject==0){ return; } //缓存方法 targetMethodID=(*env)->GetMethodID(env,clazz,"getSignatureInfo","()Ljava/lang/String;"); if(targetMethodID==0){ return; } //拿到Java返回值 jstring pring=(jstring)(*env)->CallObjectMethod(env,obj,targetMethodID); //转换成char型 char *print=(char *)(*env)->GetStringUTFChars(env,pring,0); if (strcmp(secret, print) == 0){ return 0; }else{ return 1; } }

    转载请注明原文地址: https://ju.6miu.com/read-6187.html

    最新回复(0)