将浏览器作为 Intent 打开,但不要将其保留在 Activity 堆栈中

met*_*cal 1 browser android activity-stack android-intent

我在理解活动堆栈及其影响我的应用程序的行为方面遇到了一些问题。

单击按钮后,它会启动一个打开浏览器的 Intent。当我在浏览器中并按下主页按钮时,我会进入主屏幕。现在,如果我通过启动器再次启动我的应用程序,它会打开浏览器而不是我的应用程序。如何在启动我的应用程序时绕过打开浏览器?

现在,打开 url 的代码如下所示:

private void openUrlExternal(String url) {
    Intent openUrlIntent = new Intent(Intent.ACTION_VIEW);
    openUrlIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
    openUrlIntent.setData(Uri.parse(url));
    startActivity(openUrlIntent);
}
Run Code Online (Sandbox Code Playgroud)

我是否使用了错误的标志?如果是这样,我必须使用哪些标志?

提前致谢!

Foa*_*Guy 5

像这样尝试:

openUrlIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
openUrlIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Run Code Online (Sandbox Code Playgroud)

这应该将浏览器任务与您自己的任务分离,这意味着当您重新启动您的任务时,它应该转到您的 Activity 而不是浏览器。

但是,这也取决于您从何处调用 openUrlExternal()。如果您在 Activity 启动时调用它,它仍会将您带回浏览器,但如果您从事件侦听器(即按钮单击)调用它,则在您重新启动应用程序时不应调用它。