这是Google Play报道的崩溃:
java.lang.NullPointerException异常:
3.访问com.raptisoft.SB.GameThread.run(未知)ource:2)
下面是它崩溃的函数:
Bundle mOwnedItems;
private boolean IsPurchased(String theData)
{
if (theData==null) return false;
boolean aResult=false;
if (mOwnedItems.size()>0) if (mOwnedItems.containsKey("RESPONSE_CODE"))
{
int response = mOwnedItems.getInt("RESPONSE_CODE");
if (response == 0 && mOwnedItems.containsKey("INAPP_PURCHASE_ITEM_LIST"))
{
ArrayList<String> ownedSkus = new ArrayList<String>();
ownedSkus = mOwnedItems.getStringArrayList("INAPP_PURCHASE_ITEM_LIST");
if (ownedSkus!=null) {
for (int i = 0; i < ownedSkus.size(); ++i) {
String sku = ownedSkus.get(i);
if (sku.equals(theData)) {
aResult = true;
break;
}
}
}
}
}
return aResult;
}
…然后在本机代码中从该函数调用:
bool ToJava::IsPurchased(char* theData)
{
if (theData==NULL) return false;
JNIEnv* threadEnv=GetEnv();
jstring aPassString = threadEnv->NewStringUTF(theData);
jboolean aResult=threadEnv->CallBooleanMethod(g_theGlobalRefToActivityInstance,gIsPurchasedBridge,aPassString);
threadEnv->DeleteLocalRef(aPassString);
return (aResult!=0);
}
两周来,我一直在关注这个崩溃,为函数添加了越来越多的保护措施——但它仍然在发生。我只是在java中,因为我喜欢的语言是C++。有人能告诉我这个函数中什么是空的吗?