我试图使用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;
}
}
});
}
}
答案 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");