Java Android Studio-WebView-在WebView内部打开内部链接,在默认浏览器中打开外部链接
我正在尝试将WebView添加到我的应用程序中,但只允许在我的应用程序中打开与我的域(www.example.com)连接的链接。默认情况下,不包含我的域名(example.com)的所有其他链接都应在浏览器外部打开。使用stockoverflow中的信息,我准备了以下代码,但它仍然不起作用,并且在我的应用程序中打开了所有链接,尽管创建了shouldOverrideUrlLoading(“if”(Uri.parse(url.getHost().contains)(“example.com”))。有人能帮助解决这个问题吗?我尝试了很多示例,但仍然找不到修复它的方法,但我觉得这可能只是代码中的一个小错误Java Android Studio-WebView-在WebView内部打开内部链接,在默认浏览器中打开外部链接,java,android,webview,Java,Android,Webview,我正在尝试将WebView添加到我的应用程序中,但只允许在我的应用程序中打开与我的域(www.example.com)连接的链接。默认情况下,不包含我的域名(example.com)的所有其他链接都应在浏览器外部打开。使用stockoverflow中的信息,我准备了以下代码,但它仍然不起作用,并且在我的应用程序中打开了所有链接,尽管创建了shouldOverrideUrlLoading(“if”(Uri.parse(url.getHost().contains)(“example.com”))。
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的一些示例并将它们放在一起):
您似乎没有从任何地方调用
shouldOverrideUrlLoading
方法
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;
}
}