aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/services
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/pixart/messenger/services')
-rw-r--r--src/main/java/de/pixart/messenger/services/InstallReferrerService.java39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/main/java/de/pixart/messenger/services/InstallReferrerService.java b/src/main/java/de/pixart/messenger/services/InstallReferrerService.java
new file mode 100644
index 000000000..d6e267820
--- /dev/null
+++ b/src/main/java/de/pixart/messenger/services/InstallReferrerService.java
@@ -0,0 +1,39 @@
+package de.pixart.messenger.services;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+import android.util.Log;
+
+import java.net.URLDecoder;
+
+import de.pixart.messenger.Config;
+import de.pixart.messenger.ui.StartConversationActivity;
+import de.pixart.messenger.utils.SignupUtils;
+
+public class InstallReferrerService extends BroadcastReceiver {
+
+ public static final String INSTALL_REFERRER_BROADCAST_ACTION = "eu.siacs.conversations.install_referrer";
+
+ @Override
+ public void onReceive(final Context context, final Intent intent) {
+ final String referrer = intent == null ? null : intent.getStringExtra("referrer");
+ if (referrer == null) {
+ Log.d(Config.LOGTAG, "received empty referrer");
+ return;
+ }
+ try {
+ final String decoded = URLDecoder.decode(referrer, "UTF-8");
+ final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
+ preferences.edit().putString(SignupUtils.INSTALL_REFERRER, decoded).apply();
+ Log.d(Config.LOGTAG, "stored referrer: " + decoded);
+ final Intent broadcastIntent = new Intent(INSTALL_REFERRER_BROADCAST_ACTION);
+ broadcastIntent.putExtra(StartConversationActivity.EXTRA_INVITE_URI, decoded);
+ context.sendBroadcast(broadcastIntent);
+ } catch (final Exception e) {
+ Log.d(Config.LOGTAG, "unable to process referrer", e);
+ }
+ }
+} \ No newline at end of file