2017-06-01 65 views
-1

我有一個廣播接收器,一旦安裝了應用程序就從playstore接收引用者ID,然後應該寫入文件,以便用戶首次登錄時發送到我的web服務,然後獎勵引用者。廣播接收器和活動SharedPreferences不寫入同一文件?

我面臨的問題是,在活動中,SharedPreferences總是返回一個null值,當我嘗試拉取值時,但是在接收器上,我通過在推送值後直接拉取值來測試。

我試過了。

getSharedPreferences("referral", MODE_PRIVATE); 

PreferenceManager.getDefaultSharedPreferences(this); 

getSharedPreferences(context.getPackageName() + "_preferences", MODE_PRIVATE); 

他們不過不處於工作狀態,而在這一點上不知道該怎麼辦了,我也從以下嘗試答案: getDefaultSharedPreferences in a BroadcastReceiver Shared preferences inside broadcastreceiver Android: using sharedPreferences in a broadcast receiver getDefaultSharedPreferences in a BroadcastReceiver 但非爲我工作。

接收機

public class ReferralReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Bundle extras = intent.getExtras(); 

     String referrerString = extras.getString("referrer"); 
     SharedPreferences sharedPref = context.getSharedPreferences("referral_pref", MODE_PRIVATE); 
     sharedPref.edit().putString("referrer", referrerString).apply(); 
     Log.e("TEST", "Referrer is: " + referrerString + " | " + sharedPref.getString("referrer","null" + 
       "") + " | " + context.getClass().getSimpleName()); 
    } 
} 

活動

String referrer = getSharedPreferences("referral_pref", MODE_PRIVATE).getString("referral", "null"); 
    Log.e("test", referrer + " was ref"); 

的logcat的

06-01 10:19:27.011 15963-15963 E/TEST: Referrer is: test | test | ReceiverRestrictedContext 
06-01 10:19:32.906 15963-15963 E/test: null was ref 

回答

0

當調用putString(),你有鑰匙名爲 「引薦」 並調用的getString(當),您的密鑰名稱是「推薦」。

我建議你創建一個名爲KEY_REFERRER = "referrer"一個靜態變量,並把它作爲 -

putString(KEY_REFERRER, refferString) 

getString(KEY_REFERRER, "defaultValue")