我的应用小部件首次添加到主屏幕时需要进行配置。我想在用户添加小部件后立即打开配置视图。
AppWidgetProvider
没有onCreated
事件,所以我在事件中显示配置活动onUpdate
,并在其中存储一个布尔值SharedConfiguration
,标记配置已经显示。有没有更简单的方法?
我的应用小部件首次添加到主屏幕时需要进行配置。我想在用户添加小部件后立即打开配置视图。
AppWidgetProvider
没有onCreated
事件,所以我在事件中显示配置活动onUpdate
,并在其中存储一个布尔值SharedConfiguration
,标记配置已经显示。有没有更简单的方法?
在 AppWidgetProvider XML 文件中有一个名为android:configure
您可以使用它来指向要在应用程序拖放到主屏幕时启动的 Activity。前任:
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:configure="com.bandsintown.WidgetSettingsActivity"
android:minWidth="250dp"
android:minHeight="110dp"
android:minResizeWidth="180dp"
android:minResizeHeight="110dp"
android:resizeMode="vertical|horizontal"
android:initialLayout="@layout/widget_layout"
android:updatePeriodMillis="10000" />
在您选择的配置活动中,用户可以做出他们想要的任何选择。您需要获取并存储小部件的 ID。在onCreate
方法中,像这样获取 id:
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null)
mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
当他们做出选择后,使用它向您的主屏幕小部件发送一条消息,表明它已准备好显示:
Intent intent = new Intent();
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
setResult(RESULT_OK, intent);
finish();
那会得到你所追求的。
尝试将其添加到 onEnabled 函数中。当应用小部件添加到屏幕时将调用 onEnabled
onEnabled(Context) 首次创建 App Widget 实例时调用。例如,如果用户添加了您的 App Widget 的两个实例,这只会在第一次调用。如果您需要为所有 App Widget 实例打开一个新数据库或执行只需要发生一次的其他设置,那么这是一个很好的地方。
举个例子
@Override
public void onEnabled(Context context) {
Log.i("INDEX", "WIDGET Enabled");
AppWidgetManager mgr = AppWidgetManager.getInstance(context);
RemoteViews defaultViews = new RemoteViews(context.getPackageName(), R.layout.widget_restart);
Intent idefault = new Intent(context, MainActivity.class);
idefault.putExtra("widget", "1");
PendingIntent defaultpendingIntent = PendingIntent.getActivity(context, 0, idefault, 0);
defaultViews.setOnClickPendingIntent(R.id.headWidget, defaultpendingIntent);
ComponentName comp = new ComponentName(context.getPackageName(), Widget.class.getName());
mgr.updateAppWidget(comp, defaultViews);
}
这将在第一次创建小部件时被调用以设置小部件的外观
如果您有任何问题,请随时在评论中问我:)