WebView打开网站链接

时间:2018-01-16 18:21:41

标签: java android webview

我试图使用WebView制作一个Android应用加载网站,但问题是在网站上我有不同的链接。问题是我想在外部浏览器中打开一些链接,在同一窗口中打开一些链接。

例如,如果链接以" .html"结尾在同一窗口打开但其他人在外部窗口打开。我应该在以下代码的else分支中插入什么内容?

public class MainActivity extends AppCompatActivity {
private WebView myWebView;
String url = "url";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    myWebView = (WebView) findViewById(R.id.web1);
    // Configure related browser settings
    myWebView.getSettings().setLoadsImagesAutomatically(true);
    myWebView.getSettings().setJavaScriptEnabled(true);
    myWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    // Configure the client to use when opening URLs
    // Load the initial URL
    myWebView.loadUrl("url");
    myWebView.setWebViewClient(new WebViewClient() {
        // Api < 24
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url != null && url.endsWith(".html")) {
                view.loadUrl(url);
                return true;
            } else {
                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                return true;
            }
        }
    });
}

}

1 个答案:

答案 0 :(得分:0)

此方法在API级别24中已弃用。

boolean shouldOverrideUrlLoading (WebView view, String url)

表示Api&gt; 24你可以使用

boolean shouldOverrideUrlLoading (WebView view,WebResourceRequest request)

以下是在应用程序中使用这两种方法的示例

    webView.setWebViewClient(new WebViewClient(){
// Api < 24
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if (url != null && url.endsWith(".html")) {
                    view.loadUrl(url);
                    return true;
                } else {
                    startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse(url)));
                    return true;
                }
            }
// Api > 24
            @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                if (request.getUrl().toString() != null && request.getUrl().toString().endsWith(".html")) {
                    view.loadUrl(request.getUrl().toString());
                    return true;
                } else {
                    startActivity(new Intent(Intent.ACTION_VIEW,request.getUrl()));
                    return true;
                }
            }
        });
        webView.loadUrl("https://google.com");