Конфигурация виджета Android с SharedPreferences

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

Как я могу получить имя пользователя?

7
задан gaussd 3 March 2011 в 19:07
поделиться