JNI c调用Java 返回值为String

来源:互联网 发布:pdf批量转换jpg mac 编辑:程序博客网 时间:2024/06/05 03:04

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;  }}



0 0