From 030798d5610be3349181ef47fddf983d15cc7a54 Mon Sep 17 00:00:00 2001 From: Tolriq Date: Thu, 5 Jun 2014 20:35:13 +0200 Subject: [PATCH] Fix known errors and bugs referenced at : https://code.google.com/p/marketbilling/issues/list --- .../oms/appstore/googleUtils/IabHelper.java | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/library/src/org/onepf/oms/appstore/googleUtils/IabHelper.java b/library/src/org/onepf/oms/appstore/googleUtils/IabHelper.java index df1b142f..4ab0f661 100644 --- a/library/src/org/onepf/oms/appstore/googleUtils/IabHelper.java +++ b/library/src/org/onepf/oms/appstore/googleUtils/IabHelper.java @@ -299,13 +299,16 @@ protected IInAppBillingService getServiceFromBinder(IBinder service) { public void dispose() { logDebug("Disposing."); mSetupDone = false; - if (mServiceConn != null) { + if (mService != null) { logDebug("Unbinding from service."); - if (mContext != null) mContext.unbindService(mServiceConn); - mServiceConn = null; + if (mContext != null && mServiceConn != null) { + mContext.unbindService(mServiceConn); + } mService = null; - mPurchaseListener = null; } + mPurchaseListener = null; + mContext = null; + mServiceConn = null; } /** @@ -435,6 +438,12 @@ requestCode, new Intent(), result = new IabResult(IABHELPER_REMOTE_EXCEPTION, "Remote exception while starting purchase flow"); if (listener != null) listener.onIabPurchaseFinished(result, null); + } catch (Exception e) { + logError("Exception while launching purchase flow for sku " + sku); + e.printStackTrace(); + + result = new IabResult(IABHELPER_UNKNOWN_ERROR, "Exception while starting purchase flow : " + e.getMessage()); + if (listener != null) listener.onIabPurchaseFinished(result, null); } flagEndAsync(); } @@ -994,11 +1003,13 @@ int querySkuDetails(String itemType, Inventory inv, List moreSkus) throw ArrayList responseList = skuDetails.getStringArrayList(RESPONSE_GET_SKU_DETAILS_LIST); - for (String thisResponse : responseList) { - SkuDetails d = new SkuDetails(itemType, thisResponse); - d.setSku(OpenIabHelper.getSku(appstore.getAppstoreName(), d.getSku())); - logDebug("querySkuDetails() Got sku details: " + d); - inv.addSkuDetails(d); + if (responseList != null) { + for (String thisResponse : responseList) { + SkuDetails d = new SkuDetails(itemType, thisResponse); + d.setSku(OpenIabHelper.getSku(appstore.getAppstoreName(), d.getSku())); + logDebug("querySkuDetails() Got sku details: " + d); + inv.addSkuDetails(d); + } } }