重新启动我的Widget配置活动在后台启动我的应用程序

时间:2011-01-26 09:23:03

标签: android-widget

我现在有一个相当复杂的应用程序,我想要包含一个应用程序小部件。到目前为止工作正常,所有内容都是通过内容提供商,服务和配置实用程序设置的。

现在......我希望能够在第一次初始配置后再次重新配置我的小部件。所以我的猜测是简单地使用PendingIntent和.getActivity()再次启动我的配置活动。到目前为止工作正常!

    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_news_layout);

    Intent config_intent = new Intent(context.getApplicationContext(), NewsWidgetConfigure.class);
    config_intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mappWidgetId);
    config_intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    PendingIntent conf_penIntent = PendingIntent.getActivity(context, mappWidgetId, config_intent,
            PendingIntent.FLAG_UPDATE_CURRENT);

    views.setOnClickPendingIntent(R.id.settings_button, conf_penIntent);

现在......问题是,我的配置活动的重新启动会以某种方式重新启动整个应用程序,这意味着在“返回”之后 - 按下,以及在我的Configuration.finish()之后,用户回到应用程序,而不是主屏幕。

我确信这个问题与launchModes或Intent Flags有关......但是我现在无法理解这个问题,这让我困扰了几个小时。

感谢您提前提供任何帮助。

2 个答案:

答案 0 :(得分:6)

面对同样的问题,我发现为配置活动设置android:allowTaskReparenting="false"android:taskAffinity=""可以解决问题。

答案 1 :(得分:0)

对我来说,听起来好像NewsWidgetConfigure.class在finish()或NewsWidgetConfigure.class上启动你的应用程序活动是你的应用程序,你需要找到一种方法告诉活动请求来自一个小部件(或者intent extras或shared prefs?)