当前位置: 首页 > 知识库问答 >
问题:

Webview不阻止在浏览器中打开链接

宋景福
2023-03-14

我有一个非常简单的测试应用程序,上面有一个webview组件。我正试图阻止链接在浏览器中打开,但“shouldoverrideurlloading”看起来对我不起作用。

有人能帮我看看哪里有错误吗?

    package it.quicktest.calculus;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;



public class MainActivity extends Activity {
    private WebView webView = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView webView = (WebView) findViewById(R.id.webview);

        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);

        webView.loadUrl("https://paolo9785.com?page=contacts");


    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && this.webView.canGoBack()) {
            this.webView.goBack();
            return true;
        }

        return super.onKeyDown(keyCode, event);
    }
    private class webView extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView webView, String url) {
            if(url.indexOf("paolo9785.com") > -1 ) return false;
            return true;
        }

    }
}

共有1个答案

余阳秋
2023-03-14

您是否在oncreate中注册了自定义的WebViewClient

webView.setWebViewClient(new webView()); // new class, NOT WebView instance...

您应该更改该类得名称...很让人摸不着头脑...

private class webView extends WebViewClient

也许

private class PaoloWebViewClient extends WebViewClient

后来呢

webView.setWebViewClient(new PaoloWebViewClient());
 类似资料:
  • 我最近实现了shouldInterceptRequest方法来检测链接的时间“http://sitemercado.com.br/valida“点击在android浏览器中打开它,而不是在webview中内部打开,直到它工作为止。链接在浏览器中打开,但当我回来查看webview应用程序时,它也被加载了,我希望它只在浏览器中加载。 我的代码如下: 我哪里做错了?

  • 本文向大家介绍javascript实现阻止iOS APP中的链接打开Safari浏览器,包括了javascript实现阻止iOS APP中的链接打开Safari浏览器的使用技巧和注意事项,需要的朋友参考一下 上次根据网上的教程给自己的网站弄了一个Web APP,但是给用户的感觉却十分糟糕。 问题说明: 怎么了?原来是打开WEB APP后在主页上随意打开连接,就会自作主张地打开Safari浏览器。原

  • 我发现一些电子邮件客户端不能正确处理深度链接,所以解决方案是在电子邮件中放置一个链接到一个超文本传输协议网址,并让服务器从该链接重定向到实际的深度链接。 在iOS,这个解决方案会导致浏览器在最终触发深度链接并提供打开我的应用程序之前打开。然而,我刚刚注意到我手机上有一个应用程序,它似乎使用了同样的解决方案,只是它跳过了打开浏览器的步骤,尽管电子邮件中的链接是超文本传输协议。 我如何复制相同的结果,

  • 问题内容: 我有一个简单的webview加载页面。该页面具有一些在Web视图中打开的链接。那是应该做的,所以一切正常。 但是该页面上只有一个链接应该作为弹出窗口加载,因此我希望人们单击它时可以在普通浏览器中打开它。但是正如我所说,所有链接都在Web视图中打开,因此该链接也可以这样做。 我的问题是,如何才能在普通浏览器中以弹出形式打开此链接?可能吗 链接是可变的,因此它总是在变化,不能在应用程序中进

  • 问题内容: 是否有任何(简单/内置方式)打开新浏览器(我的意思是默认的OS浏览器)窗口来查找Electron链接的方法,而不是访问您Electron应用程序中的链接? 问题答案: 您可以简单地使用:

  • 问题内容: <a target=”_blank” data-rel=”external” href="http://www.kidzout.com">www.kidzout.com 问题答案: 作为建议类似的问题,使用JavaScript来调用与参数设置为当按照InAppBrowser文档: 这应该起作用,尽管更好,更灵活的解决方案是拦截所有链接的事件,并使用从链接属性读取的参数进行调用。 请记住