diff options
author | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com> | 2016-02-09 12:31:19 +0100 |
---|---|---|
committer | Jani Heikkinen <jani.heikkinen@theqtcompany.com> | 2016-02-09 18:05:14 +0000 |
commit | 4835a1dcfbbeb19e28965f796f03e79a58159980 (patch) | |
tree | d75298934853011edc32b40b56c2e88d8d91a64f | |
parent | 1cb83f91c312742dc996f6a1fb753f5904df8486 (diff) |
Android: Fix NullPointerException on Android 5+
The correct package name for the intent is supposed to
be com.android.vending, as according to Google docs. Setting
the wrong package name would trigger a NullPointerException
which in turn would trigger a crash later, so this patch also
adds more graceful error handling.
Change-Id: If7192329a4d12e90b36148b15400cd29c6f1dc5f
Task-number: QTBUG-50867
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Reviewed-by: Kai Uwe Broulik <kde@privat.broulik.de>
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
-rw-r--r-- | src/android/src/org/qtproject/qt5/android/purchasing/QtInAppPurchase.java | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/android/src/org/qtproject/qt5/android/purchasing/QtInAppPurchase.java b/src/android/src/org/qtproject/qt5/android/purchasing/QtInAppPurchase.java index 17fddf7..3ab3d70 100644 --- a/src/android/src/org/qtproject/qt5/android/purchasing/QtInAppPurchase.java +++ b/src/android/src/org/qtproject/qt5/android/purchasing/QtInAppPurchase.java @@ -123,11 +123,16 @@ public class QtInAppPurchase { Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND"); - serviceIntent.setPackage("com.android.vending.billing"); - if (!m_context.getPackageManager().queryIntentServices(serviceIntent, 0).isEmpty()) { - m_context.bindService(serviceIntent, m_serviceConnection, Context.BIND_AUTO_CREATE); - } else { - Log.e(TAG, "No in-app billing service available."); + serviceIntent.setPackage("com.android.vending"); + try { + if (!m_context.getPackageManager().queryIntentServices(serviceIntent, 0).isEmpty()) { + m_context.bindService(serviceIntent, m_serviceConnection, Context.BIND_AUTO_CREATE); + } else { + Log.e(TAG, "No in-app billing service available."); + purchasedProductsQueried(m_nativePointer); + } + } catch (Exception e) { + Log.e(TAG, "Could not query InAppBillingService intent."); purchasedProductsQueried(m_nativePointer); } } |