Android Studio - WebView - 在默认浏览器中打开WebView内部的内部链接

时间:2016-09-14 17:38:22

标签: java android webview

我正在尝试将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;
    }
}

0 个答案:

没有答案