在webview加载网页完成后可以动态注入js样式文件
public class WebViewReaderClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
// String jqu = getasestFile("jquery.js");
// m_UIHolder.wv_Reader.loadUrl("javascript:" + jqu);//注入js文件
}
private String getasestFile(String name) {
String wholeJS = "";
try {
// URL url = new URL("path");
InputStream inputStream = null;
// inputStream = url.openStream();
inputStream = getClass().getClassLoader().getResourceAsStream("assets/" + name);
byte buff[] = new byte[1024];
ByteArrayOutputStream fromFile = new ByteArrayOutputStream();
FileOutputStream out = null;
do {
int numread = inputStream.read(buff);
if (numread <= 0) {
break;
}
fromFile.write(buff, 0, numread);
} while (true);
wholeJS = fromFile.toString();
} catch (IOException e) {
e.printStackTrace();
}
return wholeJS;
}
//获取webview页面选中某一段文本的字符
public void getSelectedData(WebView webView) {
String js = "(function getSelectedText() {" +//js获取文本的方法
"var txt;" +
"if (window.getSelection) {" +
"var range=window.getSelection();" +
"txt=range.toString();"+
"} else if (document.selection && document.selection.createRange) {" +
"txt = window.document.selection.createRange().text;" +
"}" +
"JSInterface.getText(txt);" +//JSInterface接口对象指代WebAppInterface
执行java方法
"})()";
// calling the js function
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
webView.evaluateJavascript("javascript:" + js, null);
} else {
webView.loadUrl("javascript:" + js);//执行js方法
}
webView.clearFocus();
}
//
static class WebAppInterface {
WebViewHelper.OnGetDataListener onGetDataListener;
WebAppInterface(WebViewHelper.OnGetDataListener onGetDataListener) {
this.onGetDataListener = onGetDataListener;
}
@JavascriptInterface//必须加上这句,以前webView的bug
public void getText(String text) {
onGetDataListener.getDataListener(text);//把获取的文本通过接口传递出去
}
}
//定义接口
public interface OnGetDataListener{
void getDataListener(String text);
}