打开浏览器活动,但阻止其进入活动历史记录

时间:2010-08-12 01:14:38

标签: android

我正在开发一个启动浏览器活动以执行Twitter OAuth授权的应用。此过程使用回调网址,该网址将首先重新启动启动浏览器活动的活动。

我的问题是浏览器页面仍保留在历史堆栈中,当用户首先从首次启动浏览器的首选项活动中单击回来时,它们不会返回到应用程序的主要活动,而是带回了浏览器。我已经尝试在启动意图中添加标志以防止历史记录并重置清除,但在手机上运行时,它似乎不起作用,仅在模拟器上运行。

以下是我用于启动浏览器活动的代码:

                Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl));

            webIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
            webIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
            webIntent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);

            ctx.startActivity(webIntent);

任何人都知道可能出错了什么?

4 个答案:

答案 0 :(得分:2)

启动后将活动标志设置为Intent.FLAG_ACTIVITY_CLEAR_TOP。这样,任务将从应用程序堆栈中删除,因此您的主要活动仍然是每次新启动时的最高活动:

ctx.startActivity(webIntent);
browserIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

答案 1 :(得分:0)

呼叫

finish();

之后

ctx.startActivity(webIntent);

答案 2 :(得分:0)

嗨我现在有同样的问题。我认为解决方案是使用特殊标志启动要返回的活动:

Intent intent = new Intent(this, acticityToReturnTo.getClass());
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);

问题是它不起作用(至少1.6)..但也许有人找到了解决方案。我认为FLAG_ACTIVITY_CLEAR_TOP正是我们的目标。

答案 3 :(得分:0)

我发现Intent.FLAG_ACTIVITY_NO_HISTORY只有在浏览器之前没有运行时才有效。如果我重新启动Android并运行我的应用程序调用浏览器一切正常。但是当我在我的应用程序之前启动浏览器时,浏览器将保留在历史记录中。

这里也是相关问题,但没有真正有用的解决方案

How can I do that in Android. Activity -> WebBrowser -> Acrivity, but Press Back not see the WebBrowser