在WidgetConfigActivity之后阻止App-Activity启动

时间:2012-08-15 11:26:57

标签: android configuration android-activity widget android-activityrecord

我有一个具有ConfigActivity的Widget。如果我第一次将我的Widget放在主屏幕上,一切都按预期工作:

  • 用户位置小工具 - > WidgetConfig已启动
  • 用户配置小组件
  • 用户点击接受
  • 带有Widget的主屏幕由服务显示和更新。

Widget上有一个图标,允许用户返回配置。出现Bug,如果用户启动了应用程序,按下HomeButton,然后在WidgetConfigIcon上点击:

  • 用户点击WidgetConfigIcon - > WidgetConfig已启动
  • 用户配置并点击接受
  • 显示APP而不是HomeScreen
  • 用户按BackButton
  • 显示HomeScreen。

如果用户启动应用程序,并且单击BackButton而不是HomeButton,则不会显示。我希望ConfigIcon具有完全相同的行为,因为它位于主屏幕上的第一个位置。我发布了相关的实现

WidgetService:

Intent activityIntent = new Intent(this, WidgetConfig.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//tried many Flags with no result
activityIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mWidgetData.getWidgetId());
PendingIntent configPendingIntent = PendingIntent.getActivity(this, mWidgetData.getWidgetId(), activityIntent, PendingIntent.FLAG_UPDATE_CURRENT);
mRemoteViews.setOnClickPendingIntent(R.id.widget_controls, configPendingIntent);

ManifestEntry:

<activity 
    android:name="namespace.WidgetConfig" 
    android:theme="@android:style/Theme.Light.NoTitleBar">
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
     </intent-filter>
</activity>

如果需要,我会发布任何其他代码。

在用户完成配置后,我该怎么做才能防止应用程序出现?

1 个答案:

答案 0 :(得分:0)

我自己开始工作。我添加了IntentFlag Intent.FLAG_ACTIVITY_NEW_TASK并在我的Android-Manifest中添加了一个自定义android:taskAffinity:"some.custom.widgetConfig.task.ns",它正在运行。