From 9776a5b03f8930db5832f16df2ab60d95eb87dfa Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 30 Oct 2015 16:51:24 +0100 Subject: [PATCH] Added IAP donation Refs #11 --- app/build.gradle | 4 +- app/src/main/AndroidManifest.xml | 1 + .../vending/billing/IInAppBillingService.aidl | 144 ++++++++++++++ .../eu/faircode/netguard/ActivityMain.java | 176 +++++++++++++++++- app/src/main/res/layout/about.xml | 21 ++- app/src/main/res/values-ar/strings.xml | 2 + app/src/main/res/values-fr/strings.xml | 2 + app/src/main/res/values-it/strings.xml | 2 + app/src/main/res/values-nl/strings.xml | 2 + app/src/main/res/values-ro/strings.xml | 2 + app/src/main/res/values-sk/strings.xml | 2 + app/src/main/res/values-zh-rCN/strings.xml | 2 + app/src/main/res/values/strings.xml | 2 + 13 files changed, 355 insertions(+), 7 deletions(-) create mode 100644 app/src/main/aidl/com/android/vending/billing/IInAppBillingService.aidl diff --git a/app/build.gradle b/app/build.gradle index 66ad56f0..085fefb7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,8 +8,8 @@ android { applicationId "eu.faircode.netguard" minSdkVersion 21 targetSdkVersion 23 - versionCode 8 - versionName "0.8" + versionCode 9 + versionName "0.9" } buildTypes { release { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fe0d72a6..b37d5dee 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,6 +4,7 @@ + () { + @Override + protected Object doInBackground(Object... objects) { + try { + // Get available SKUs + ArrayList skuList = new ArrayList(); + skuList.add(SKU_DONATE); + Bundle query = new Bundle(); + query.putStringArrayList("ITEM_ID_LIST", skuList); + Bundle details = billingService.getSkuDetails(3, getPackageName(), "inapp", query); + Log.i(TAG, "Billing.getSkuDetails"); + Util.logBundle(TAG, details); + if (details.getInt("RESPONSE_CODE") != 0) + return null; + + // Check available SKUs + boolean found = false; + for (String item : details.getStringArrayList("DETAILS_LIST")) { + JSONObject object = new JSONObject(item); + if (SKU_DONATE.equals(object.getString("productId"))) { + found = true; + break; + } + } + Log.i(TAG, SKU_DONATE + "=" + found); + if (!found) + return null; + + // Get purchases + Bundle purchases = billingService.getPurchases(3, getPackageName(), "inapp", null); + Log.i(TAG, "Billing.getPurchases"); + Util.logBundle(TAG, purchases); + return (purchases.getInt("RESPONSE_CODE") == 0 ? purchases : null); + + } catch (Throwable ex) { + return ex; + } + } + + @Override + protected void onPostExecute(Object result) { + if (result instanceof Throwable) { + // Handle exception + Throwable ex = (Throwable) result; + Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex)); + Toast.makeText(ActivityMain.this, ex.toString(), Toast.LENGTH_LONG).show(); + + } else if (result != null) { + // Show donate/donated + Bundle bundle = (Bundle) result; + ArrayList skus = bundle.getStringArrayList("INAPP_PURCHASE_ITEM_LIST"); + btnDonate.setVisibility(skus.contains(SKU_DONATE) ? View.GONE : View.VISIBLE); + tvThanks.setVisibility(skus.contains(SKU_DONATE) ? View.VISIBLE : View.GONE); + } + } + }.execute(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { + Log.i(TAG, "onActivityResult request=" + requestCode + " result=" + requestCode); + Util.logExtras(TAG, data); + if (requestCode == REQUEST_VPN) { // Update enabled state SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); @@ -355,7 +513,17 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences // Start service if (resultCode == RESULT_OK) SinkholeService.start(this); - } else + + } else if (requestCode == REQUEST_DONATION) { + if (resultCode == RESULT_OK) { + // Handle donation + Intent intent = new Intent(ACTION_DONATE); + LocalBroadcastManager.getInstance(this).sendBroadcast(intent); + } + + } else { + Log.w(TAG, "Unknown activity result request=" + requestCode); super.onActivityResult(requestCode, resultCode, data); + } } } diff --git a/app/src/main/res/layout/about.xml b/app/src/main/res/layout/about.xml index 23c4ff9b..04491046 100644 --- a/app/src/main/res/layout/about.xml +++ b/app/src/main/res/layout/about.xml @@ -3,7 +3,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" - android:paddingBottom="20dp" + android:paddingBottom="40dp" android:paddingEnd="20dp" android:paddingStart="20dp" android:paddingTop="20dp"> @@ -44,4 +44,23 @@ android:layout_marginTop="8dp" android:text="@string/app_copyright" android:textAppearance="@android:style/TextAppearance.Material.Small" /> + +