在我的应用程序中,我使用getPreferences(Context.MODE_PRIVATE)
来获取用户设置的首选项。请注意,我在整个项目中使用getPreferences
而不是getSharedPreferences
。
现在我想从BroadcastReceiver获取首选项,但问题是:它只能使用方法getSharedPreferences
。我想这个我得到另一个偏好文件吧?那我怎样才能让我的正常#39;使用getPreferences
方法的首选项(我可以使用getSharedPreferences
方法获得)?
答案 0 :(得分:1)
getPreferences()方法只应在Activity中使用,并且无法在BroadcastReceiver中使用它。相反,您必须使用getSharedPreferences(String prefKey,int mode)来获取所有应用程序组件的Preferences。在“保存持久状态”下查看:
http://developer.android.com/reference/android/app/Activity.html
答案 1 :(得分:1)
<强>的getPreferences 强> 在此调用中,您不会为您的首选项传递名称,这并不意味着创建此首选项对象时没有名称。简单地说,这个调用为这样创建的首选项文件分配了一个默认名称。
您始终需要对活动的引用才能调用此方法。 ACTIVITY.this.getPreferences(模式)
<强> getSharedPreferences 强> 在这种情况下,您可以通过为其指定名称来创建首选项文件。
getSharedPreferences(名称,模式)
解决方案
在应用中使用getSharedPreferences(名称,模式)
或尝试获取getPreferences(mode)指定的名称 sharedPreference文件。然后在你的接收器中使用该名称 getSharedPreferences(名称,模式)。
将可见活动的引用传递给接收方。 (这可能容易出现一些问题)