Как передать строку установки реферера в мое приложение

В моем приложении реализован механизм установки реферера, и я получил его в InstallReferrerReceiver::onReceive() как это:

public class InstallReferrerReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {

        String referrer = intent.getStringExtra("referrer");

        Log.v(Constants.APP_TAG, "InstallReferrerReceiver: " + referrer);

        // And then how to pass referrer to my App?
    }
}

Согласно тому, что я вижу, он вызывается сразу после завершения установки, но приложение еще не запущено, как это будет сделано после того, как я нажму на open в магазине приложений GooglePlay.

Итак, как я могу передать строку реферера моему приложению для его обработки?

Я пытался сохранить его в defaultSharedPreferences но я не могу прочитать его после запуска приложения.

public class InstallReferrerReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {

        Log.v(Constants.APP_TAG, "Version code: " + BuildConfig.VERSION_CODE);

        String referrer = intent.getStringExtra("referrer");

        Log.v(Constants.APP_TAG, "InstallReferrerReceiver: " + referrer);

        Log.v(Constants.APP_TAG, "Store referrer in " + PreferenceManager.getDefaultSharedPreferencesName(context.getApplicationContext()));
        final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
        sharedPreferences.edit().putString(Constants.REFERRAL, referrer).apply();
        Log.v(Constants.APP_TAG, "Stored referrer is " + sharedPreferences.getString(Constants.REFERRAL, null));
    }
}

Но похоже getDefaultSharedPreferences относится к ограниченному контексту в InstallReferrerReceiverотличается от того, что используется в приложении.

Так как же решить эту проблему? Я просто уточнил, что я использую это для личных параметров, это не касается какой-либо Кампании!

1 ответ

Решение

Попробуйте сохранить данные в SharedPrefs, используя:

 SharedPreferences preferences = context.getSharedPreferences("my_prefs", Context.MODE_PRIVATE);
 Editor preferencesEditor = preferences.edit();
 preferencesEditor.putString(Constants.REFERRAL, referrer);
 preferencesEditor.commit();
Другие вопросы по тегам