summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>2016-02-09 12:31:19 +0100
committerJani Heikkinen <jani.heikkinen@theqtcompany.com>2016-02-09 18:05:14 +0000
commit4835a1dcfbbeb19e28965f796f03e79a58159980 (patch)
treed75298934853011edc32b40b56c2e88d8d91a64f
parent1cb83f91c312742dc996f6a1fb753f5904df8486 (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.java15
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);
}
}