【问题标题】:Don't navigate to other pages in WebView,disable links and references and go back to first page不要导航到 WebView 中的其他页面,禁用链接和引用并返回第一页
【发布时间】:2018-08-13 19:44:04
【问题描述】:

我在 Android 中有一个 webView,并在其中打开了一个 html 网页。但它充满了链接和图像:当我单击其中一个时,它会加载到我的 web 视图中。
我想禁用此行为,所以如果我单击一个链接,请不要加载它并返回第一页

我已经尝试过这个解决方案并为自己编辑了一些,但它不起作用:

webSettings.setJavaScriptEnabled(myWebViewClient.equals(true));

这会打开一个白页,但我想打开主 URL。我的 webviewclient 代码:

public class MainActivity extends Activity {

public static String URL = "http://www.example.com/";
private WebView webView = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    this.webView = (WebView) findViewById(R.id.webview);
    MyWebViewClient myWebViewClient = new MyWebViewClient();
    WebSettings webSettings = webView.getSettings();

        webSettings.setJavaScriptEnabled(myWebViewClient.equals(true));
      webView.reload();
      webView.loadUrl(URL);

    webSettings.setDisplayZoomControls(true);
    webView.setWebViewClient(new WebViewClient());
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(event.getAction() == KeyEvent.ACTION_DOWN) {
        switch(keyCode) {
            case KeyEvent.KEYCODE_BACK:
                if(webView.canGoBack()){
                    webView.goBack();
                    return true;
                }
                break;
        }

    }
    return super.onKeyDown(keyCode, event);
}

public void onBackPressed(){
    if (webView.canGoBack()){
        webView.goBack();
    }
    else{
        super.onBackPressed();
    }
}
}

【问题讨论】:

    标签: android webview android-webview


    【解决方案1】:

    您需要在 WebViewClient 中覆盖 onPageStarted:

      @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
    
     //here check url i.e equals to your that html page
      // if url equals not load url
    

    以及返回页面检查:

    if(view.canGoBack())
      // load first page url
    }
    

    【讨论】:

    • 当点击其他页面时,我无法打开,也不显示白页。我的目的只是在点击其他网站时打开一个网址。
    【解决方案2】:

    您需要一个覆盖加载 url 的 WebViewClient:

    webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // url is the url to be loaded
    return true; // override url (don't load it)
    return false; // let url load
    }
    });
    

    您始终可以返回 true 以保持在同一页面上。

    要打开 Main Url 并停留在上面,请使用以下命令: webview.loadUrl(MainUrl);

    然后覆盖加载url并始终返回true:

    webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
    return true;
    }
    });
    

    【讨论】:

    • 我知道,但如果我点击另一个站点,我想打开 Main Url(例如:example.com)
    • @f.dehghanpour Main Url 是您拥有的某个常量 url,还是加载 url 的基本 url?如果是常量Url,返回true覆盖加载url,使用webview.loadUrl(mainUrl);
    • 主 url 是一个包含所有内容的页面。我想打开它而不打开其他。
    猜你喜欢
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多