diff options
Diffstat (limited to 'src/main/java/de/pixart/messenger/services')
-rw-r--r-- | src/main/java/de/pixart/messenger/services/InstallReferrerService.java | 39 |
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 |