Get preferences in AppWidget Provider

两盒软妹~` 提交于 2019-11-30 04:02:48

getSharedPreferences(), should you choose to use it, is only available on subclasses of Context, like Activity or Service. AppWidgetProvider is a subclass of BroadcastReceiver, which is not a Context.

That being said, if you are going to use the PreferenceScreen system, or if you are not certain that it's gotta gotta gotta be getSharedPreferences(), I would use PreferenceManager.getDefaultSharedPreferences() instead. Those are the SharedPreferences that PreferenceScreen/PreferenceActivity will use.

You should have been passed a context in widget's onUpdate() method so you can call context.getSharedPreferences().

For per-appwidget preferences, I have used this:

public static String getSharedPreferencesNameForAppWidget(Context context, int appWidgetId) {
    return context.getPackageName() + "_preferences_" + appWidgetId;
}

public static SharedPreferences getSharedPreferencesForAppWidget(Context context, int appWidgetId) {
    return context.getSharedPreferences(
        getSharedPreferencesNameForAppWidget(context, appWidgetId), 0);
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!