Initial license check code for playstore

Stephen Paul Weber created

Change summary

build.gradle                                                                     |  1 
src/cheogram/java/eu/siacs/conversations/ui/WelcomeActivity.java                 |  1 
src/conversationsPlaystore/java/com/cheogram/android/CheogramLicenseChecker.java | 38 
src/conversationsPlaystore/res/values/strings.xml                                |  1 
src/free/java/com/cheogram/android/CheogramLicenseChecker.java                   | 12 
5 files changed, 53 insertions(+)

Detailed changes

build.gradle 🔗

@@ -55,6 +55,7 @@ dependencies {
         exclude group: 'com.google.firebase', module: 'firebase-measurement-connector'
     }
     cheogramPlaystoreImplementation("com.android.installreferrer:installreferrer:2.2")
+    cheogramPlaystoreImplementation 'com.github.singpolyma:play-licensing:1c637ea03c'
     conversationsPlaystoreImplementation("com.android.installreferrer:installreferrer:2.2")
     quicksyPlaystoreImplementation 'com.google.android.gms:play-services-auth-api-phone:18.0.1'
     implementation 'org.sufficientlysecure:openpgp-api:10.0'

src/cheogram/java/eu/siacs/conversations/ui/WelcomeActivity.java 🔗

@@ -115,6 +115,7 @@ public class WelcomeActivity extends XmppActivity implements XmppConnectionServi
 
     @Override
     protected void onCreate(final Bundle savedInstanceState) {
+        new com.cheogram.android.CheogramLicenseChecker(this).checkLicense();
         if (getResources().getBoolean(R.bool.portrait_only)) {
             setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
         }

src/conversationsPlaystore/java/com/cheogram/android/CheogramLicenseChecker.java 🔗

@@ -0,0 +1,38 @@
+package com.cheogram.android;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Looper;
+import android.provider.Settings.Secure;
+import android.util.Log;
+
+import com.google.android.vending.licensing.*;
+
+import eu.siacs.conversations.R;
+
+public class CheogramLicenseChecker implements LicenseCheckerCallback {
+	private final LicenseChecker mChecker;
+
+	public CheogramLicenseChecker(Context context) {
+		mChecker = new LicenseChecker(context, new StrictPolicy(), context.getResources().getString(R.string.licensePublicKey));
+	}
+
+	public void checkLicense() {
+		mChecker.checkAccess(this);
+	}
+
+	@Override
+	public void dontAllow(int reason) {
+		Log.d("CheogramLicenseChecker", "dontAllow: " + reason);
+	}
+
+	@Override
+	public void applicationError(int errorCode) {
+		Log.d("CheogramLicenseChecker", "applicationError: " + errorCode);
+	}
+
+	@Override
+	public void allow(int reason, ResponseData data, String signedData, String signature) {
+		Log.d("CheogramLicenseChecker", "" + reason + "	/ " + data + " / " + signedData + " / " + signature);
+	}
+}

src/conversationsPlaystore/res/values/strings.xml 🔗

@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
     <string name="applicationId">com.cheogram.android.playstore</string>
+    <string name="licensePublicKey">MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlcl4jV0uqcCD9EX8RS2FuxtkZIrAyQhBHFWWaYXH+Fdh2KO6bykD0sabYxAtKDquSagkQKgiDsj7lKdk01tI+3prGI1D96ml7bzRmGt82PltR1e7sE9FTfhzn2+6zWOcsabZEgCZRBBIY2TUZtWlagJE7aJncS/sERjdaiRkDqDnCqsBjLvRcfEEnc3KJjhQicv4GTau5wJnXWQcgz5FPe2j0sIQjbzHrSHn0omKV9ObwxDYn5JPfBV/0nePLUFrkONrRsNy7311aVJOj4Hqd4y74vRjdBV9hI+PLJ9R+y4p1nhV1F3Ih/VAsw5pDECpe/sKput/lpIsxnn/W3DKvQIDAQAB</string>
 </resources>

src/free/java/com/cheogram/android/CheogramLicenseChecker.java 🔗

@@ -0,0 +1,12 @@
+package com.cheogram.android;
+
+import android.content.Context;
+import android.util.Log;
+
+public class CheogramLicenseChecker {
+	public CheogramLicenseChecker(Context context) { }
+
+	public void checkLicense() {
+		Log.d("CheogramLicenseChecker", "skipping license checks in free build");
+	}
+}