Я хочу, чтобы пользователь определял имя пользователя при запуске виджета рабочего стола, над которым я сейчас работаю.Но у меня проблемы с хранением и доступом к этому значению в моем виджете.На данный момент я делаю деятельность по настройке, которая запускается при создании виджета.Поэтому я определил его в файле манифеста следующим образом (я также определил его в 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)
.
Как я могу получить имя пользователя?