有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓如何使用java阻止我自己浏览器中的特定网站?

我正在使用安卓 studio构建自己的浏览器。我需要在浏览器中屏蔽特定网站,例如facebook。com,youtube。通用域名格式。我该怎么做

package com.example.privatebrowser;

 import 安卓x.appcompat.app.AppCompatActivity;
 import 安卓.os.Bundle;
 import 安卓.webkit.WebSettings;
 import 安卓.webkit.WebView;
 import 安卓.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

private WebView pb;

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

    pb = (WebView) findViewById(R.id.privatebrowser);
    pb.setWebViewClient(new WebViewClient());
    pb.loadUrl("https://www.google.com/");

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

}
@Override
public void onBackPressed(){
    if(pb.canGoBack()){
        pb.goBack();
    }
    else
    {
        super.onBackPressed();
    }

    }
 }

共 (1) 个答案

  1. # 1 楼答案

    创建自定义WebView客户端

    private class MyWebViewClient extends WebViewClient {
    
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
        }
    
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
    
            String url = request.getUrl().toString();
            //Log.e("url", URL);
    
            if(url.contains("url you want to block") {
                 //do whatever you want to do
            } else {
                view.loadUrl(url);
            }
    
            return true;
        }
    
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
     
        }
    }
    

    然后在WebView中设置上述WebClient

    pb.setWebViewClient(new MyWebViewClient());