From a6dd8e45fa2c1c3b0a3473361ddd9f21d604fab8 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Fri, 24 Jan 2020 19:55:58 +0100 Subject: use installreferrer libray instead of broadcast listener --- src/playstore/AndroidManifest.xml | 9 ---- .../messenger/utils/InstallReferrerUtils.java | 62 ++++++++++++++++++++++ 2 files changed, 62 insertions(+), 9 deletions(-) create mode 100644 src/playstore/java/de/pixart/messenger/utils/InstallReferrerUtils.java (limited to 'src/playstore') diff --git a/src/playstore/AndroidManifest.xml b/src/playstore/AndroidManifest.xml index 767fb4581..a54f8bee1 100644 --- a/src/playstore/AndroidManifest.xml +++ b/src/playstore/AndroidManifest.xml @@ -28,14 +28,5 @@ - - - - - - diff --git a/src/playstore/java/de/pixart/messenger/utils/InstallReferrerUtils.java b/src/playstore/java/de/pixart/messenger/utils/InstallReferrerUtils.java new file mode 100644 index 000000000..05824b9b2 --- /dev/null +++ b/src/playstore/java/de/pixart/messenger/utils/InstallReferrerUtils.java @@ -0,0 +1,62 @@ +package de.pixart.messenger.utils; + +import android.app.Activity; +import android.content.SharedPreferences; +import android.os.RemoteException; +import android.preference.PreferenceManager; +import android.util.Log; + +import com.android.installreferrer.api.InstallReferrerClient; +import com.android.installreferrer.api.InstallReferrerStateListener; +import com.android.installreferrer.api.ReferrerDetails; + +import de.pixart.messenger.Config; +import de.pixart.messenger.ui.WelcomeActivity; + +public class InstallReferrerUtils implements InstallReferrerStateListener { + + private static final String PROCESSED_INSTALL_REFERRER = "processed_install_referrer"; + + + private final WelcomeActivity welcomeActivity; + private final InstallReferrerClient installReferrerClient; + + + public InstallReferrerUtils(WelcomeActivity welcomeActivity) { + this.welcomeActivity = welcomeActivity; + final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(welcomeActivity); + if (preferences.getBoolean(PROCESSED_INSTALL_REFERRER, false)) { + Log.d(Config.LOGTAG, "install referrer already processed"); + this.installReferrerClient = null; + return; + } + this.installReferrerClient = InstallReferrerClient.newBuilder(welcomeActivity).build(); + this.installReferrerClient.startConnection(this); + } + + public static void markInstallReferrerExecuted(final Activity context) { + final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); + preferences.edit().putBoolean(PROCESSED_INSTALL_REFERRER, true).apply(); + } + + @Override + public void onInstallReferrerSetupFinished(int responseCode) { + switch (responseCode) { + case InstallReferrerClient.InstallReferrerResponse.OK: + try { + final ReferrerDetails referrerDetails = installReferrerClient.getInstallReferrer(); + final String referrer = referrerDetails.getInstallReferrer(); + welcomeActivity.onInstallReferrerDiscovered(referrer); + } catch (RemoteException e) { + Log.d(Config.LOGTAG, "unable to get install referrer", e); + } + break; + default: + Log.d(Config.LOGTAG, "unable to setup install referrer client. code=" + responseCode); + } + } + + @Override + public void onInstallReferrerServiceDisconnected() { + } +} \ No newline at end of file -- cgit v1.2.3