Android 从广播接收器获取首选项

Android 从广播接收器获取首选项,android,broadcastreceiver,android-preferences,Android,Broadcastreceiver,Android Preferences,在我的应用程序中,我使用getPreferences(Context.MODE\u PRIVATE)获取用户设置的首选项。请注意,我在整个项目中使用的是getPreferences,而不是getSharedReferences 现在我想从BroadcastReceiver获取首选项,但问题是:它只能使用方法getSharedReferences。我想用这个我可以得到另一个偏好文件,对吗?那么,如何通过getSharedReferences方法获得我的“正常”首选项(我可以通过getPrefere

在我的应用程序中,我使用
getPreferences(Context.MODE\u PRIVATE)
获取用户设置的首选项。请注意,我在整个项目中使用的是
getPreferences
,而不是
getSharedReferences

现在我想从BroadcastReceiver获取首选项,但问题是:它只能使用方法
getSharedReferences
。我想用这个我可以得到另一个偏好文件,对吗?那么,如何通过
getSharedReferences
方法获得我的“正常”首选项(我可以通过
getPreferences
方法获得)?

getPreferences()方法只能在活动中使用,不能在广播接收器中使用。相反,您必须使用GetSharedReferences(String prefKey,int模式)来获取所有应用程序组件的首选项。在“保存持久状态”下查看:


获取首选项 在此调用中,您不会传递首选项的名称,这并不意味着创建此首选项对象时没有名称。简单地说,这个调用为以这种方式创建的首选项文件指定了一个默认名称

您总是需要对活动的引用才能调用此方法。 ACTIVITY.this.getPreferences(模式)

getSharedReferences 在这种情况下,您可以通过为其指定名称来创建首选项文件

GetSharedReferences(名称、模式)

解决方案

  • 在整个应用程序中使用GetSharedReferences(名称、模式)

  • 或者尝试获取getPreferences(模式)为 共享引用文件。然后在你的接收者中使用这个名字 GetSharedReferences(名称、模式)

  • 将可见活动的引用传递给接收者。(这可能会出现一些问题)


  • 所以这两种方法都给了我相同的首选项文件?我认为这是两个不同的文件,我无法从彼此访问它们。因此,如果我使用从
    getPreferences
    创建的编辑器来编写设置,那么我编写的所有设置都可以通过
    getPreferences
    getSharedReferences
    访问。如果我不正确,请不要责怪我,但如果您使用的是活动的类名,我认为可以。getPreferences()正在将活动的类名作为首选项名称传递。因此,如果在getSharedReferences()中使用此参数,可能会起作用