我正在尝试将WebView添加到我的应用中,但我想允许在我的应用内打开仅与我的域(www.example.com)相关联的链接。所有其他不包含我的域名(example.com)的链接应该在默认浏览器外部打开。使用来自stockoverflow的信息我准备了以下代码,但它仍然无法工作,所有链接都在我的应用程序中打开,尽管创建了shouldOverrideUrlLoading(" if(Uri.parse(url).getHost() 。载(" example.com&#34))&#34)。有人能帮忙解决这个问题吗?我尝试了很多样本,但仍然无法找到解决问题的方法,但我认为这可能只是代码中的一个小错误。
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView myWebView = (WebView) findViewById(R.id.www);
myWebView.setWebViewClient(new WebViewClient());
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.loadUrl("http://www.example.com");}
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (Uri.parse(url).getHost().contains("example.com")) {
return false;
}
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
解决!我不确定代码是100%正确,但工作正常,也许对某人有用(我不是作者,我只是使用了stackoverflow中的一些示例并将它们组合在一起) :
public class MainActivity extends AppCompatActivity {
private WebView webView;
private ProgressDialog progress;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setContentView(R.layout.activity_main);
WebView myWebView = (WebView) findViewById(R.id.www);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.setWebViewClient(new MyWebViewClient());
myWebView.loadUrl("https://www.example.uk");
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (Uri.parse(url).getHost().contains("example.com")) {
return false;
}
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
}