【问题标题】:How to force the browser not to open a new page each time?如何强制浏览器每次都不打开新页面?
【发布时间】:2011-07-30 22:13:28
【问题描述】:

我要提前感谢所有愿意花时间阅读我的帖子的人(也许会回答:p)

我正在开发一个非常简单的 Android 应用程序,旨在显示一个网站。 当然,我已经阅读了文档,并且我正在使用以下代码来显示页面:

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

网站显示正确,我在天堂 :) 但.. 如果我通过按 HOME 按钮退出应用程序(我知道它并没有真正退出,但是神经元)并再次启动它,Web 浏览器会打开一个包含我的页面的新选项卡。我想要的是浏览器不创建新标签,而是保留第一次启动时创建的标签。

我宁愿不使用 Webviews,因为它意味着更多的代码,而且我想要一个非常简单的应用程序。

我是 Android 开发新手,所以请善待我 :D 我为这些错误道歉,我知道我的英语很糟糕。

谢谢你们!

【问题讨论】:

    标签: android android-browser


    【解决方案1】:

    我对 android dev 也很陌生,但据我所知,当您以您的方式调用浏览器时,您只是在默认浏览器中打开 URL。使用 WebView 是理想的,因为它特定于您的应用程序(孤立的,或者至少这是我的印象)。使用 webview 并不难。下面是一些应该让你顺利进行的代码:

        public void initWebView() {         
    
            WebView wview;  
    
            wview = new WebView(getApplicationContext());
    
            //Add the WebView to the current window
            ((WindowManager)getApplicationContext().getSystemService("window")).addView(wview, new WindowManager.LayoutParams(300, 300));
    
            wview.clearHistory();
            wview.clearCache(true);
    
            wview.getSettings().setJavaScriptEnabled(true);
            wview.getSettings().setPluginsEnabled(true);
            wview.getSettings().setPluginState(WebSettings.PluginState.ON);
    
            wview.getSettings().setRenderPriority(RenderPriority.HIGH);
    
    
            wview.setWebViewClient(new WebViewClient()
            {
                public void onPageFinished(WebView view, String url)
                {                               
                    //Callback for when pages are finished loading
                    wview.layout(0, 0, (int)DESIRED_WIDTH, (int)DESIRED_HEIGHT);
                }
    
                public void onPageStarted(WebView view, String url, Bitmap favicon)
                {
                    //Callback for when pages are being loaded
    
                }
             });
    
            wview.loadUrl("http://blog.ascensionsystems.ca/");
        } 
    

    【讨论】:

    • 感谢您的快速回答 Ascension,我正在尝试设置此 Webview,但我很失望,尤其是在尝试显示进度条时(这样用户体验还不错),我正在参考 android 开发人员,但对我不起作用:(顺便说一句,你的帖子真的很有帮助,我会在准备好后立即返回这里提供一个可行的解决方案;)
    • 老实说,从我到目前为止所学到的知识来看,它是它自己的类 (android) 中的野兽,它有一点学习曲线。耐心,你会弄清楚的。 :)
    【解决方案2】:

    我一直在与 WebView 打交道,它们可以完成工作 :) 刚接触 Android 开发时设置它们有点棘手,但它们的可配置性非常好,因此可以适应所有情况。

    所以我的问题的答案可能是:USE WEBVIEW

    你的代码对 Ascension 有很大帮助,它让我不必从头开始,并看到一些“核心”方法需要有一个功能性的 WebView。

    给您的小提示:您在此处使用的某些方法在文档中被标记为“已弃用”(例如,我正在考虑 setPluginsEnabled())。

    最后但同样重要的是,对于那些想知道的人:如果您使用 Ascension 示例代码,您会注意到您的页面在每次屏幕旋转时都会重新加载。搞清楚为什么会这样让我有点痛苦,但这很正常,见http://www.devdiv.com/android/docs/guide/topics/resources/runtime-changes.html

    【讨论】:

      猜你喜欢
      • 2017-04-02
      • 2020-12-22
      • 1970-01-01
      • 2014-07-30
      • 2013-07-28
      • 2012-02-27
      • 1970-01-01
      • 1970-01-01
      • 2012-09-29
      相关资源
      最近更新 更多