在Widget中获取DefaultSharedPreferences?

时间:2014-09-05 12:35:04

标签: android widget android-context

我需要在我的小部件活动中从SharedPreferences获取布尔值。我怎样才能做到这一点?这甚至可能吗?因为Widget Receiver是广播接收器的子类,它不是上下文。

2 个答案:

答案 0 :(得分:0)

您需要从上下文中获取SharedPreferences实例,该实例在窗口小部件提供程序的onUpdate()方法中提供。像这样:

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
 SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME,0);
}

您可以分别使用putBoolean(key,value)和getBoolean(key,value)来存储和加载来自共享首选项的布尔值。

答案 1 :(得分:0)

AppWidgetProviderClass的几乎所有方法都获得Context,让我们来看看:

onAppWidgetOptionsChanged (Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle newOptions)
onDeleted(Context context, int[] appWidgetIds)
onDisabled(Context context)
onEnabled(Context context)
onReceive(Context context, Intent intent)
onUpdate (Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)

所以,只需使用这个上下文就可以了:

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);