Я хочу, чтобы пользователь мог определять имя пользователя при запуске виджета на главном экране, над которым я работаю. Но у меня проблемы с хранением и доступом к этому значению в моем виджете. В настоящий момент я создаю действие конфигурации, которое запускается при создании виджета. Поэтому я определил его в файле манифеста следующим образом (я также определил его в widgetprovider.xml):
<activity android:name=".ExampleAppWidgetConfigure">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
</activity>
Затем действие настройки позволяет пользователю ввести имя пользователя, которое будет сохранено в SharedPreferences
из виджет:
SharedPreferences.Editor prefs = context.getSharedPreferences(PREFS_NAME, MODE_WORLD_READABLE).edit();
prefs.putString("username", text);
prefs.commit();
Мой вопрос: как мне получить доступ к этому значению? В моем классе виджетов я хочу иметь переменную экземпляра, например:
final String userName = ...; //load the username here.
Но как мне получить имя пользователя в моем виджете? Проблема в том, что виджет является подклассом AppWidgetProvider
, из которого я не могу получить доступ к SharedPreferences
(поскольку AppWidgetProvider
не является подклассом Context
). Я подумал о том, чтобы сохранить имя пользователя в файле strings.xml, что тоже кажется невозможным. Правильно ли вообще используется SharedPreferences
? Я также подумал о настройке имени пользователя на TextView
моего виджета, который позже должен отображать имя пользователя. Но мне нужно имя пользователя в моем классе для некоторых запросов к серверу, и кажется, что нет способа получить текст TextView
в виджете ... только установщик setTextViewText (String text)
.
Как я могу получить имя пользователя?