1

我開發了一個具有一個活動和廣播接收器的應用程序。我想設置braodcast接收器的方式,可以使用一些設置在活動中設置。在廣播接收器中使用sharedpreferenced

我使用下面的代碼和它的工作之間的兩個活動,但活動和braodcast接收器不能捕捉設置之間。

這裏我爲活性起着節省代碼:

private void savePreferences(String key, String value) { 
    SharedPreferences sp = PreferenceManager 
      .getDefaultSharedPreferences(this); 
    Editor edit = sp.edit(); 
    edit.putString(key, value); 
    edit.commit(); 
} 

這個代碼braodcast接收器:

@Override 
    public void onReceive(Context context, Intent intent) { 

    Bundle extras = intent.getExtras(); 




     SharedPreferences sp = context.getSharedPreferences("myPrefs", 
       Context.MODE_PRIVATE); 
     String Password = sp.getString("PASSWORD", "1234"); 

     int duration = Toast.LENGTH_LONG; 
      Toast toast = Toast.makeText(context, 
         "password is"+Password, duration); 
      toast.show(); 
    } 
+0

您是否嘗試用'PreferenceManager .getDefaultSharedPreferences(context)初始化'sp';'onReceive內部? –

+0

是的,我初始化... – M410

回答

1

你的接收器使用一個名爲「myPrefs」文件,但您使用的是默認的文件名在您的活動中設置偏好時。

可使用此一說打開一個名爲「myPrefs」

SharedPreferences sp = context.getSharedPreferences("myPrefs", 
      Context.MODE_PRIVATE); 

特定偏好的文件或本打開的默認文件

SharedPreferences sp = PreferenceManager 
     .getDefaultSharedPreferences(this); 

但兩者不是一個混合物,它們指的是不同的偏好文件。

+0

你能告訴我如何編輯「private void savePreferences(String key,String value)」方法嗎? – M410

+0

添加到上面的答案。 – Kuffs

+0

好吧,當我使用「SharedPreferences sp = PreferenceManager .getDefaultSharedPreferences(this);」在廣播接收機中它給出了一些錯誤! – M410