Android:如何在本地css文件中打开URL
我有一个本地css文件,我加载到一个WebView中,它显示没有问题。它是一个联系人屏幕,所以它有一个电话号码、电子邮件地址和一个网站。当我点击电话号码或电子邮件地址时,手机会(分别)打开拨号器或电子邮件应用程序,没有问题,但我无法打开网站的URL。我在下面包括了我的webView设置和css文件Android:如何在本地css文件中打开URL,android,css,url,webview,Android,Css,Url,Webview,我有一个本地css文件,我加载到一个WebView中,它显示没有问题。它是一个联系人屏幕,所以它有一个电话号码、电子邮件地址和一个网站。当我点击电话号码或电子邮件地址时,手机会(分别)打开拨号器或电子邮件应用程序,没有问题,但我无法打开网站的URL。我在下面包括了我的webView设置和css文件 WebView webView = (WebView) findViewById(R.id.webView); webView.setWebViewClient(new WebViewClient()
WebView webView = (WebView) findViewById(R.id.webView);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("file://" + htmlManager.htmlFilePath(HtmlManager.kHtmlFilenameContactUs));
CSS
电话:
123.456.7890
电邮:
网站:
您应该像这样扩展您的WebViewClient
public static class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("mailto:")) {
MailTo mt = MailTo.parse(url);
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_EMAIL, new String[] { mt.getTo() });
i.putExtra(Intent.EXTRA_SUBJECT, mt.getSubject());
i.putExtra(Intent.EXTRA_CC, mt.getCc());
i.putExtra(Intent.EXTRA_TEXT, mt.getBody());
mContext.startActivity(Intent.createChooser(i, "Send mail..."));
return true;
} else if (url.startsWith("http://")) {
view.loadUrl(url);
return true;
}
return true;
}
};
webView.loadUrl("javascript:(function(){ /*code that removes attribute*/ })()");
别忘了将客户端设置为WebView
webView.setWebViewClient(new MyWebViewClient ());
编辑:我刚刚注意到URI包含属性target=“\u blank”。你也不应该这样
webView.getSettings().setSupportMultipleWindows(true);
或者像这样使用javascript进行肮脏攻击并删除target=“\u blank”
public static class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("mailto:")) {
MailTo mt = MailTo.parse(url);
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_EMAIL, new String[] { mt.getTo() });
i.putExtra(Intent.EXTRA_SUBJECT, mt.getSubject());
i.putExtra(Intent.EXTRA_CC, mt.getCc());
i.putExtra(Intent.EXTRA_TEXT, mt.getBody());
mContext.startActivity(Intent.createChooser(i, "Send mail..."));
return true;
} else if (url.startsWith("http://")) {
view.loadUrl(url);
return true;
}
return true;
}
};
webView.loadUrl("javascript:(function(){ /*code that removes attribute*/ })()");
取决于您是想在新的浏览器窗口中打开URL,还是想在
网络视图中加载URL
谢谢您的快速响应!我实现了代码,但仍然无法加载url。我运行了调试器,当我单击mailto时:webViewClient正在调用正确的代码,但当我单击url时,它不会调用任何东西。当我点击链接05-23 10:10:51.802:V/webview(17551):singleCursorHandlerTouchEvent-getEditableSupport FASLE
05-23 10:10:52.122:D/webview(17551):blockWebkitViewMessage=False抱歉,我是StackOverflow新手,还没有弄清楚如何格式化我的问题/评论