【问题标题】:Back button in browser浏览器中的返回按钮
【发布时间】:2011-07-11 12:06:15
【问题描述】:

在我的应用程序中,我使用 Intent 在浏览器中打开网页。默认行为是后退按钮指向浏览器中的上一页,而不是返回我的应用程序。有没有办法强制返回按钮让用户返回我的应用程序?

【问题讨论】:

    标签: android android-intent android-browser


    【解决方案1】:

    一旦您使用 Intent 打开另一个应用程序,则由该应用程序处理后退按钮。如果您只想将网页显示为活动,您可以运行自己的活动,该活动托管 WebView,并使用以下命令打开您的网页:

    webview.loadUrl("http://lolcats.com/");
    

    在您的活动中,您可以覆盖后退按钮来执行您需要执行的操作:

    @Override
    public void onBackPressed()
    {
        // put code here to do things
    }
    

    【讨论】:

    • 谢谢。如果我理解正确,则无需覆盖某些内容。 WebView 只是一个视图,后退按钮按预期工作 - 转到上一个活动而不是上一页。我说的对吗?
    • 是的,你是对的。我在想你可能需要做一些其他花哨的事情,但如果你只需要显示一个网页并在返回按钮上返回上一个活动,你就不需要覆盖。
    • 也许你知道另一个问题的答案。如果浏览器遇到具有适当架构的 URI,它就有能力启动另一个活动。 WebView 可以吗?
    • 如果使用适当的意图过滤器声明了预期的活动,那应该可以工作。
    • 我经历了令人沮丧的行为。我的应用程序看起来像:Main -> Browser -> Main。如果我将 Main 保留为标准,那么首先浏览器会创建新的 Main,其次,如果用户返回 Home,他会返回第一个 Main,而不是第二个。否则,如果我将 Main 设为 singleTask,则浏览器会首先找到 Main,一切都很好。但是,每次回家都会破坏堆栈!各种方式都不好……
    【解决方案2】:

    你如何调用浏览器?如果你这样做:

    Uri url = Uri.parse("http://mysite.com/");
    Intent launchBrowser = new Intent(Intent.ACTION_VIEW, url);
    startActivity(launchBrowser);
    

    那么它应该可以按您的预期工作。

    【讨论】:

    • 是的,我也是这样做的。但是我阅读了浏览器重新实现后退按钮并以不同的方式进行操作。你能解释一下吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多