我正忙着关注this android tutorial on widgets。
特别是您设置ConfigurationActivty
的部分。
以下是他们的步骤:
AppWidgetManager
AppWidgetManager.getInstance()
的实例
RemoteViews
updateAppWidget(int, RemoteViews)
布局更新App小部件
Intent
,使用Activity
结果进行设置,然后完成Activity
我需要帮助2:我已经使用了SharedPrefs
,但我如何实际访问我的XML,它提供了有关窗口小部件的信息,例如更新频率:
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/widget_layout"
android:minHeight="200dp"
android:minWidth="144dp"
android:widgetCategory="home_screen"
android:configure="widget.AppWidgetConfigureActivity"
android:updatePeriodMillis="1800000" >
</appwidget-provider>
{编辑:}好的,到目前为止我已经实现了这个:
private void SaveWidgetConfiguration() {
int deviceTypeId = 0;
int deviceId = 0;
String hashedPasscode = "";
int updateFreq = 30000;
SharedPreferences prefs = AppWidgetConfigureActivity.this.getSharedPreferences("prefs", 0);
SharedPreferences.Editor edit = prefs.edit();
edit.putInt("Widget_DeviceTypeId:" + appWidgetId, deviceTypeId);
edit.putLong("Widget_DeviceId:" + appWidgetId, deviceId);
edit.putString("Widget_Passcode:" + appWidgetId, hashedPasscode);
edit.putInt("Widget_UpdateFreq:" + appWidgetId, updateFreq);
edit.commit();
}
但现在我在哪里以及如何获得这些偏好?
我正在使用服务来更新我的小部件。我是否在MyWidgetProvider中获取它们?
My Current MyWidgetProvider:
public class MyWidgetProvider extends AppWidgetProvider {
private static final String LOG = "de.vogella.android.widget.example";
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
Log.w(LOG, "onUpdate method called");
// Get all ids
ComponentName thisWidget = new ComponentName(context, MyWidgetProvider.class);
int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);
// Get Preferences:
// Build the intent to call the service
Intent intent = new Intent(context.getApplicationContext(), UpdateWidgetService.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, allWidgetIds);
// Update the widgets via the service
context.startService(intent);
}
答案 0 :(得分:3)
App Widget配置Activity是一个可选的Activity,当用户添加App Widget并允许他或她在创建时修改App Widget设置时启动。在配置活动中,您可以设置更新频率,TextView中的文本,窗口小部件的背景绘制等等......这意味着您在创建窗口小部件之前设置它并且可见。您可以在SharedPreferences
中保存所有设置,如果您需要更新或重新创建窗口小部件(重新启动或配置更改后),您可以使用SharedPreferences
方法从onUpdate
获取保存的设置AppWidgetProvider
或您的服务UpdateWidgetService.java
。由于您使用UpdateWidgetService
更新小部件,因此您应在此服务中使用SharedPreferences
。
这是一个例子:
Context context = getApplicationContext();
SharedPreferences prefs = context.getSharedPreferences("prefs", 0);
int deviceTypeId = prefs.getInt("Widget_DeviceTypeId:" + appWidgetId, defValue); // defValue is used if the preference doesn't exist
// get all other preferences/settings and use them to update the widget
如果您需要更多详细信息,请询问。
答案 1 :(得分:0)
您不需要访问appwidget_info.xml
,因为它已被所有小部件共享,并且您已在Manifest
声明了它的使用情况。它将由WidgetProvider
自动选中。 Perform your App Widget configuration.
阶段可用于从SharedPrefences
中获取某些设置,稍后可用于创建视图。