如何禁用WebView导航到另一个页面?

时间:2018-07-31 02:26:00

标签: android

请帮助我。如何禁用webview打开新页面?我想禁用此行为,因此,如果我单击链接,请不要加载它。我已经尝试过此解决方案并为自己编辑了一些内容,但没有用。我的webview客户端代码:

public class MainActivity extends AppCompatActivity {

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

    webView = (WebView) findViewById(R.id.webView);
    webView.setWebViewClient(new myWebClient());
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl("http://example.com");

    webView.setWebViewClient(new WebViewClient() {
        public void onReceivedError(WebView webView, int errorCode, String description, String failingUrl) {
            try {
                webView.stopLoading();
            } catch (Exception e) {
            }

            if (webView.canGoBack()) {
                webView.goBack();
            }

            webView.loadUrl("about:blank");
            AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
            alertDialog.setTitle("Error");
            alertDialog.setMessage("Check your internet connection and try again.");
            alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Try Again", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    finish();
                    startActivity(getIntent());
                }
            });

            alertDialog.show();
            super.onReceivedError(webView, errorCode, description, failingUrl);
        }
    });
}

public class myWebClient extends WebViewClient
{
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {

        view.loadUrl(url);
        return true;

    }
}

@Override
// This method is used to detect back button
public void onBackPressed() {
    if(webView.canGoBack()) {
        webView.goBack();
    } else {
        // Let the system handle the back button
        super.onBackPressed();
    }
}
}

2 个答案:

答案 0 :(得分:0)

在您的WebViewClient中,您只能加载所需的特定网址,如下所示,

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if(url.equals("my url")) {
       view.loadUrl(url);
    }
    return true;
}

答案 1 :(得分:0)

首先,您使用网络视图创建网络活动,如下所示:

xml布局:-

<?xml version="1.0" encoding="utf-8"?>
<WebView  xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>

WebView活动:-

public class WebViewActivity extends AppCompatActivity {

@BindView(R.id.webView1)
WebView webView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_web_view);
  // i am using intent getting the value from  like this
    Intent intent2 = getIntent();
    Bundle bundle = intent2.getExtras();
    String link = bundle.getString("Agreement_URL");
    Log.e("link---",""+link);
    String file_type=bundle.getString("file_type");
    if(file_type.equals("PDF"))
    {
        webView = (WebView) findViewById(R.id.webView1);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl("https://docs.google.com/gview?embedded=true&url="+link);
        setContentView(webView);
    }
    else
    {
        webView = (WebView) findViewById(R.id.webView1);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl(link);
    }

}

/**  Method on BackPressed Button click*/
public void onBackPressed(){
    super.onBackPressed();

    /** Activity finish*/
    finish();
}

传递上一个活动中的值

                 Intent intent =new Intent(context, WebViewActivity.class);
                 intent.putExtra("Agreement_URL","http://54.183.245.32/uploads/"+ finalUploadDoc);
                 intent.putExtra("file_type","PDF");
                 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                 Log.e("ggg",""+ finalUploadDoc);
                 context.startActivity(intent);

尝试一下对您有帮助