这是我的代码:
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内部,以及在外部浏览器中打开的任何其他内容。它可行吗?我有多接近完成这件事?
感谢您的帮助!
答案 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
。