因此,我刚刚实现了一个简单的Webview应用程序,其中正在加载stackoverflow主页。之前它工作正常,但是现在当我单击某个链接时,它将在默认浏览器中打开该链接。通过创建我的自定义webViewClient类,我已经实现并覆盖了shouldoverrideUrlLoading方法。 我知道有很多这样的问题要问,但是我之所以写这个问题仅仅是因为它们对我不起作用。
public class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(Uri.parse(url).getHost().endsWith(".com"))
return false;
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(url));
view.getContext().startActivity(intent);
return true;
}
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new MyWebViewClient());
final customEditText editText = findViewById(R.id.urlEditText);
Button button = findViewById(R.id.enterButtonId);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
webView.loadUrl("https://"+editText.getText().toString().trim().toLowerCase());
}
});
}
答案 0 :(得分:0)
您可以使用此:
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("url");
只需实现Web客户端并在loadUrl之前进行设置即可。最简单的方法是:
WebView.setWebViewClient(new WebViewClient());
答案 1 :(得分:0)
因此,当我在其中阅读教程https://www.journaldev.com/9333/android-webview-example-tutorial时,可以认为,当shouldOverrideUrlLoading()方法提供false时,它将在我们的webview中打开url,如果返回true,则根本不会加载该页面。因此,我认为我的代码较早起作用是因为我正在打开.com扩展网站,但是当我打开其他扩展名网站时,它将重定向到默认浏览器。