0
我使用谷歌Nexus s的nfc函數來開發基於射頻卡的程序。 這裏是我的方法,我認爲這個問題是數據對象jni方法調用異常掛起getarraylength
unsigned char *CNFCFunList::jbyteArray2Byte(jbyteArray data, int *outLen)
{
LOGI("jbyteArray2Byte begin");
if (data == NULL)
{
LOGI("data is NULL");
return 0;
}
jsize size = m_pJNIEnv->GetArrayLength(data);
LOGI("GetArrayLength begin %d",size);
//LOGI("GetByteArrayElements begin,data length = %d",env->GetArrayLength(data));
jbyte * olddata = (jbyte*)m_pJNIEnv->GetByteArrayElements(data, 0);
jsize oldsize = m_pJNIEnv->GetArrayLength(data);
unsigned char* bytearr = (unsigned char*)olddata;
*outLen = (int)oldsize;
return bytearr;
}
,但我得到JNI警告:JNI方法調用例外LCOM未決 /UAI/JNI/...; (j [BJI)(GetArrayLength) 掛起的例外是:
也是我得到的異常
I/dalvikvm(5836): java.io.IOException: Transceive failed
11-23 10:19:35.269: I/dalvikvm(5836): at android.nfc.TransceiveResult.getResponseOrThrow(TransceiveResult.java:52)
11-23 10:19:35.269: I/dalvikvm(5836): at android.nfc.tech.BasicTagTechnology.transceive(BasicTagTechnology.java:151)
11-23 10:19:35.269: I/dalvikvm(5836): at android.nfc.tech.IsoDep.transceive(IsoDep.java:172)
11-23 10:19:35.269: I/dalvikvm(5836): at com.uai.jni.libUai.uaiGenKeyPair(Native Method)
11-23 10:19:35.269: I/dalvikvm(5836): at
我改變了我的代碼,並獲得收發失敗uaiGenKeyPair操作。我認爲uaiGenKeyPair需要很多時間,但是在我設置了isoDEP.timeout(5000)之後,它仍然收發失敗 –
所以你看,這是'android.nfc.tech.IsoDep.transceive'的問題,這是你的異常。不要在輔助函數中使用'GetArrayLength'。用正確的描述發佈一個新問題,以便其他人可以幫助你。理想地接受你已有的一些答案,以便有人真的有興趣回答你下一個問題。 –