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

Я реализовал механизм реферера установки в своем приложении, и я получаю его в 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, отличному от того, который используется в приложении.

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


person fralbo    schedule 27.04.2017    source источник


Ответы (1)


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

 SharedPreferences preferences = context.getSharedPreferences("my_prefs", Context.MODE_PRIVATE);
 Editor preferencesEditor = preferences.edit();
 preferencesEditor.putString(Constants.REFERRAL, referrer);
 preferencesEditor.commit();
person nano    schedule 27.04.2017