Android:WebView - 在WebView中打开某些URL,其余的在外部?

时间:2013-02-02 19:35:43

标签: android webview

这是我的代码:

public class MainActivity extends Activity {

@SuppressLint("SetJavaScriptEnabled") @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    WebView mywebview = (WebView) findViewById(R.id.webview);
    mywebview.loadUrl("http://www.shufflemylife.com/shuffle");
    WebSettings webSettings = mywebview.getSettings();
    webSettings.setJavaScriptEnabled(true);
    mywebview.setWebViewClient(new WebViewClient());

}

class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if(url.contains("/shuffle")){
            Intent i = new Intent(Intent.ACTION_VIEW);
            i.setData(Uri.parse(url));
            startActivity(i);
            }
        return true;

        }
    }
    }

基本上,我希望任何包含'/ shuffle'的url加载到WebView内部,以及在外部浏览器中打开的任何其他内容。它可行吗?我有多接近完成这件事?

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

为了澄清,您应该如何编写shouldOverrideUrlLoading方法:

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (url.contains("/shuffle")) {
        mWebView.loadUrl(url);
        return false;
    } else {
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setData(Uri.parse(url));
        startActivity(intent);
        return true;
    }
}

答案 1 :(得分:3)

  

可行吗?

  

我有多接近完成这项工作?

关闭,但向后。 WebView的默认行为是在外部浏览器中显示链接。因此,如果url.contains("/shuffle"),您希望在loadUrl()上致电WebView以保持内部链接,并在此情况下返回true。如果这是您想要正常处理的网址,请返回false