我遇到了一个问题: 我想在屏幕上放置小部件后启动ChooseWidgetActivity。
我在WidgetProvider中编写了onUpdate,就像那样:
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int N = appWidgetIds.length;
for (int i = 0; i < N; i++) {
int appWidgetId = appWidgetIds[i];
//--- I'm starting activity here:
Intent intent = new Intent(context, WidgetChooseActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
//---
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.widget_layout_icon);
views.setOnClickPendingIntent(R.id.widgetIcon, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
但只有我得到的是从小部件屏幕中选择小部件后立即启动的WidgetChooseActivity。我无法将其放在屏幕上,因为我的活动掩盖了Android主屏幕。 是否可以在>将小部件放在屏幕上后启动活动?
答案 0 :(得分:4)
前段时间我想出了一个问题的解决方案......要在之后启动一些活动将小部件放在屏幕上,就足以在清单中使用特殊的intent-filter定义它,例如:
<activity android:name=".MyWidgetConfigurationActivity">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
</intent-filter>
</activity>
并在AppWidgetProviderInfo元数据中添加 android:configure 条目,例如:
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:configure=".MyWidgetConfigurationActivity"
android:initialLayout="@layout/widget_layout"
android:minHeight="80dp"
android:minWidth="80dp"
android:updatePeriodMillis="30000" />
答案 1 :(得分:0)
是的,您可以使用处理程序。
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
try {
// here write down the code
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}, 2000);