0

appwidgetlistview。我们可以在这里看到一些信息

1) 此小部件不适用于 2.x。但是这个设备上的用户在他的列表中看到这个小部件并且可以在屏幕上移动它。在他得到错误之后。我可以在 2.x 上隐藏这个小部件吗?Ofcouse,我可以将此小部件的标题设置为“MyWidget ...(3.x-4.x)。但我认为这不好。

2) 第二期。在单击小部件时,我打开我的应用程序之一activity(widgetAct)。这不是主要活动。widgetAct 显示为对话框。一切正常,但是...如果我打开主要活动,然后单击 HOME,而不是 BACK。现在单击小部件,打开我的 widgetAct,但在背景上我也看到了主要活动。

3)另一种情况。打开 widgetAct。看到这个活动。单击返回。现在长按:查看上次启动的应用程序。单击我的应用程序(其中包含 widgetAct)并查看此 widgetAct。但是想查看我的应用程序的主要活动或任何其他活动,而不是 widgetAct。

我尝试不同的情况:添加FLAG_ACTIVITY_NO_HISTORY, FLAG_ACTIVITY_NEW_TASK, FLAG_ACTIVITY_CLEAR_TOP. 但没有任何帮助:

Intent i = new Intent(ctx, myActivityCls);      i.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
i.setFlags(i.getFlags() | Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pi = PendingIntent.getActivity(ctx, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(viewId, pi);

我明白了,我的 widgetAct 打开时只有FLAG_ACTIVITY_NEW_TASK标志。

4

1 回答 1

0

我不知道为什么,但是...我设置了一些标志来意图并在点击小部件上启动活动。真正开启的活动只有FLAG_ACTIVITY_NEW_TASK

解决方案: 1) 将小部件 xml 提供程序从 xml 文件夹移动到 xml-v11。现在在 2.x 设备上,这个小部件被隐藏了。

2) 第二种情况:为 widgetAct taskAffinity设置。但在这种情况下,在最近的应用程序中,我看到了 2 个我的应用程序实例,因为使用了 2 个堆栈活动。要修复它,请添加到 widgetAct:

@Override
protected void onPause() {
    super.onPause();
    finish();
}

3)点击小部件打开widgetAct。我关闭此实例 widgetAct 并打开另一个 widgetAct,但添加下一个标志:FLAG_ACTIVITY_NO_HISTORY, FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS

于 2013-08-19T10:05:20.990 回答