Android 如何控制webview中的链接
我的webview应用程序有问题。我想在默认浏览器中打开所有外部链接,但在webview中保持内部链接打开。 实际上,我已经尽了最大努力,但是内部和外部链接都在默认浏览器中打开,而不是在默认浏览器中仅打开外部链接 下面是我的代码。请给我一个解决方案。提前谢谢Android 如何控制webview中的链接,android,Android,我的webview应用程序有问题。我想在默认浏览器中打开所有外部链接,但在webview中保持内部链接打开。 实际上,我已经尽了最大努力,但是内部和外部链接都在默认浏览器中打开,而不是在默认浏览器中仅打开外部链接 下面是我的代码。请给我一个解决方案。提前谢谢 public class MainActivity extends AppCompatActivity { public WebView myWebView; @Override protected void onCreate(B
public class MainActivity extends AppCompatActivity {
public WebView myWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView myWebView = findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (Uri.parse(url).getHost().equals("https://www.Example.com")) {
return false;
}
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
});
myWebView.loadUrl("https://www.Example.com");
}
}请检查此代码,它将帮助您
String scheme = data.getScheme(); // "http"
String host = data.getHost(); // "twitter.com"
从下面构建一个字符串并进行比较将达到您的要求
String weburl = scheme+host;
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Uri data = Uri.parse(url);
String scheme = data.getScheme(); // "http"
String host = data.getHost(); // "twitter.com"
String weburl = scheme+host;
if (weburl.equals("https://www.Example.com")) {
return false;
}
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
这应该做到:
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
String url = request.getUrl().toString();
if (url.startsWith("your-domain") || url.contains("your-domain")) {
// internal links... (open in same view)
view.loadUrl(url);
} else {
// external links... (open in default browser)
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
}
return true;
}
});
先生,你能给我更多的启发吗。我在应用程序开发方面不是很好。请告诉我如何以及在哪里放置代码。谢谢。它仍然无法打开webview中的内部链接。此代码更好,但我不想指定外部域。我只想用默认浏览器打开每个外部链接。请你把代码修改一下好吗。非常感谢,先生,你真的让我高兴。事实上,我已经连续两天在寻找解决方案。主席先生,[getUrl]表明了一些注意事项:调用需要API级别21当前最小值为19:andoid.webkit.WebResourceRequestgetUrl。你觉得怎么样?再次感谢你。