JNI c呼叫Java 返回值為String
Java定義:
c程式碼: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; }
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; } }
相關推薦
JNI c呼叫Java 返回值為String
Java定義: public String getSignatureInfo() { try { PackageInfo packageInfo = mContext.getPackageManager().getPack
Java Servlet呼叫WebService返回值為null的問題
這幾天,這處理Jaave Servlet呼叫WebService的時候,碰到返回值為空的問題,但是,新建的Java專案,使用同樣的方法呼叫,缺能夠返回正確的值。 Servlet中的程式碼: package dbconn; import java.io.BufferedInputStream;
######springmvc中方法返回值為String時@responseBody不能返回json物件。
引用 2 樓 tzdwsy 的回覆: RequestMappingR中加上produces=“application/json”試試 這樣寫只是返回前臺後不報錯,但是資料格式依然不是json的,它只是在返回的資料上打了個引號;“channelId=2” 真正的解決方法應該是這樣的
python呼叫C動態庫匯出函式的返回值為指標型別時,在64位python環境下被截斷解決方法
class my_void_p(c_void_p): pass def sslog_create_instance(): #直接指定 restype=c_void_p在64位上還是會發生地址截
C#呼叫C++的Dll(引數和返回值為char* TCHAR*)
想要在C#和C++之間進行字串傳遞會涉及到兩件事情: 1.C#的string和C++的字串首指標要怎麼對應. 2.字串分為ANSI和UNICODE. C++ 標頭檔案介面: //FilePolice.h //引數和返回值為Ansi extern "C" __dec
c#中 命令copy 已退出,返回值為1
col .cn 文件 返回 copy nbsp spa round img 後期生成時間命令行,可以指定生成目錄,是否刪除.pdb文件 c#中 命令copy 已退出,返回值為1
JNI之 c/c++呼叫java建構函式
有時候c/c++是面向過程編碼,很多有用工具類都沒有,要編碼人員自己實現,如果可以呼叫java大量存在的類豈不是更省事更簡潔。 下面是通過呼叫java的Date類產生是時間戳。 public class JniConsTest { //c訪問java建構函式,並返回物件
JNI-通過C++呼叫JAVA
1、背景 在Report_Center_Task_Proc上報訊息執行緒中,我們在訊息佇列裡面獲取到資料後,把資料簡單解析後通過java介面g_jniEnv->CallVoidMethod上報資料,那什麼在c++程式碼中怎麼呼叫java函式方法的呢? &nb
C++函式指標、指標函式、返回值為函式指標的函式淺談
C++函式指標、指標函式、返回值為函式指標的函式淺談 引言 函式指標、指標函式是C中重要而容易混淆的概念,博主將通過兩個例項來說明這兩個截然不同的概念。 而返回值為函式指標的指標函式就更難理解了,放在文章的最後來介紹。 函式指標 函式指標是一種特殊的 指標,它指向函式的入口。
android jni開發中c++ 呼叫java 方法
最近幾天搞fbreader 電子書的二次開發,其中需要 c++ 呼叫 java方法解密電子書,所以l老虎吃天,硬著頭皮看c++程式碼。 具體的思路如下,其實也就這幾步: 1. jni 中用到 java反射的方法
呼叫介面獲取token時,返回值為{"desc":"CurTime is illegal","code":414}
原因:伺服器時間跟網路時間不同步!!! 即時通訊,第三方為網易雲介面:https://api.netease.im/nimserver/uer/create.action 呼叫介面獲取token時,返回值為{"desc":"CurTime is illegal",
java.util.LinkedHashMap cannot be cast to com.*** resetTemplate的GET請求返回值為帶泛型的型別
原因: resetTemplate的GET請求返回值為帶泛型的型別不可以直接使用,因為他內部封裝成了一個LinkedHashMap,所以我們直接用的時候就會報錯 解決:
C++中的RVO優化,針對返回值為物件時臨時物件的優化
摘要: RVO (return value optimization) 和NRVO (named return value optimization) 是C++在處理一個函式返回類物件並將返回值賦給另一個物件時,為了減少拷貝構造次數以及析構次數而採用的一種編譯器優化技術。 當函式的返回值
Android JNI-c/c++呼叫java方法
在使用ndk開發的時候,java呼叫c/c++方法是必須要的。但是很多時候,c/c++有callback需要反饋給java的時候(比如IM通訊登入成功資訊和一些異常資訊),就需要c/c++呼叫java方法了。 在看這篇文章之前,必須對JNI有一些基礎的瞭解,比
Android JNI 通過C/C++呼叫JAVA方法
#include "video1_TestNative.h" #include <iostream> using namespace std; JNIEXPORT void JNICALL Java_video1_TestNative_sayHello(JNIEnv * env, job
Linux下C++呼叫Java簡單例項(jni)
假設工作目錄為/home1. Java端1) mkdir leixf && cd leixf2) 建立SubClass.java檔案,內容如下:package leixf;public class SubClass {private String name
JNI進階一 (C++呼叫java屬性和方法,javap的使用)
一、C/C++函式分析://獲取jclass物件,引數:this的意思,就是native方法所在的類1.GetObjectClass(jobject) //獲取普通屬性id,第一個引數:類物件, 第二個引數:屬性名,第三個引數:屬性簽名(不知道的同學點選這裡)2.GetFie
Android Studio3.0開發JNI流程------Java呼叫C++以及C++呼叫Java
上一章講解了JNI中一些函式表的說明,這節開始講解Java與C++互調的過程。 在Android Studio3.0中建立一個支援JNI開發的Android程式。 編寫activity_main.xml佈局: <?xml version="1.0
QSqlTableModel呼叫rowCount函式返回值為0 解決辦法
先貼程式碼: //公告模組 void SysKaoqi::showElse() {msgText->show();model->setTable("message");QModelIndex index;int numRows = model->rowCo
【軟體開發底層知識修煉】二十五 ABI之函式呼叫約定二之函式返回值為結構體時的約定
上一篇文章學習了幾種函式呼叫約定的區別,點選連結檢視上一篇文章:【軟體開發底層知識修煉】二十四 ABI之函式呼叫約定 本篇文章繼續學習函式呼叫約定中,關於函式返回值的問題。當函式返回值為結構體時,函式返回值是如何來傳給呼叫者的。