我在应用计费方面遇到一些问题,我想在应用内创建一个可以多次购买的产品。但谷歌以一种产品首先必须消费的方式进行应用程序计费,然后才能再次购买。我尝试使用以下代码消费它:
if (resultCode == RESULT_OK) {
try {
JSONObject jo = new JSONObject(purchaseData1);
String sku = jo.getString(inappid);
Toast.makeText(
ABActivity.this,
"Purchase Successful",
Toast.LENGTH_LONG).show();
Bundle ownedItems = mservice.getPurchases(3, getPackageName(), "inapp", null);
// Check response
int responseCode = ownedItems.getInt("RESPONSE_CODE");
if (responseCode != 0) {
throw new Exception("Error");
}
// Get the list of purchased items
ArrayList<String> purchaseDataList =
ownedItems.getStringArrayList("INAPP_PURCHASE_DATA_LIST");
for (String purchaseData : purchaseDataList) {
JSONObject o = new JSONObject(purchaseData);
String purchaseToken = o.optString("token", o.optString("purchaseToken"));
// Consume purchaseToken, handling any errors
mservice.consumePurchase(3, getPackageName(), purchaseToken);
}
} catch (JSONException e) {
System.out.println("Failed to parse purchase data.");
e.printStackTrace();
} catch (RemoteException e) {
System.out.println("Failed to parse purchase data.");
e.printStackTrace();
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {System.out.println("Failed to parse purchase data.");
e.printStackTrace();
// TODO Auto-generated catch block
e.printStackTrace();
}
我第一次尝试购买该产品时效果很好但是当我再次尝试购买它时,应用程序崩溃了。当我尝试将应用程序与虚拟设备一起使用并使用logcat记录错误时,它第一次尝试购买该项目时崩溃,并且它在第一次在我的手机上发出NullPointerException时它完美无缺,所以我不这样做认为NullPointerException是问题所在。
提前致谢。
答案 0 :(得分:0)
我在使用物品方面遇到同样的问题。
您无法在虚拟设备上测试应用内结算。这就是你得到NullPointerException的原因。