不要导航到WebView中的其他页面,禁用链接和引用,然后返回首页

时间:2018-08-13 19:44:04

标签: android webview android-webview

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

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

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

这将打开一个白页,但我想打开主URL。我的webview客户端代码:

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();
    }
}
}

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

您需要一个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);

,然后覆盖加载网址并始终返回true:

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