在屏幕上放置小部件后开始 Activity
Start Activity after put widget on screen
我遇到了一个问题:
我想在将小部件放到屏幕上后启动 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,它在从小部件屏幕选择小部件后立即启动。我无法将它放在屏幕上,因为我的 activity 盖过了 android 主屏幕。
activity 在 将小部件放到屏幕上后是否可以启动?
是的,您可以为此使用处理程序。
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
try {
// here write down the code
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}, 2000);
前段时间我想出了一个解决我的问题的方法...要在 activity 将小部件放在屏幕上之后开始一些 activity ,将其定义在具有特殊意图过滤器的清单,例如:
<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" />
我遇到了一个问题: 我想在将小部件放到屏幕上后启动 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,它在从小部件屏幕选择小部件后立即启动。我无法将它放在屏幕上,因为我的 activity 盖过了 android 主屏幕。 activity 在 将小部件放到屏幕上后是否可以启动?
是的,您可以为此使用处理程序。
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
try {
// here write down the code
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}, 2000);
前段时间我想出了一个解决我的问题的方法...要在 activity 将小部件放在屏幕上之后开始一些 activity ,将其定义在具有特殊意图过滤器的清单,例如:
<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" />