private void evaluateJs(String js, final ValueCallback<String>callback){
mWebView.evaluateJavascript(js, new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
if (callback != null){
callback.onReceiveValue(value);
@Override public void onSensorChanged(SensorEvent sensorEvent) { float lux=sensorEvent.values[0]; jsInterface.updateLux(lux); String js=String.format(Locale.US, "update_lux(%f)", lux); if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.KITKAT) { wv.evaluateJavascript(js, null); else { wv.loadUrl("javascript:"+js);
@Override public void onSensorChanged(SensorEvent sensorEvent) { float lux=sensorEvent.values[0]; jsInterface.updateLux(lux); String js=String.format(Locale.US, "update_lux(%f)", lux); if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.M) { // postLux(); else if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.KITKAT) { wv.evaluateJavascript(js, null); else { wv.loadUrl("javascript:"+js);
@TargetApi(Build.VERSION_CODES.KITKAT) public void onLocationChanged(Location location) { StringBuilder buf=new StringBuilder("whereami("); buf.append(String.valueOf(location.getLatitude())); buf.append(","); buf.append(String.valueOf(location.getLongitude())); buf.append(")"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { browser.evaluateJavascript(buf.toString(), null); else { browser.loadUrl("javascript:" + buf.toString());
@Override public void onSensorChanged(SensorEvent sensorEvent) { float lux=sensorEvent.values[0]; jsInterface.updateLux(lux); String js=String.format(Locale.US, "update_lux(%f)", lux); if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.M) { wv.postWebMessage(new WebMessage(jsInterface.getLux()), Uri.EMPTY); else if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.KITKAT) { wv.evaluateJavascript(js, null); else { wv.loadUrl( "javascript:"+js);
@Test @Config(minSdk = 19) public void evaluateJavascript() { assertThat(shadowOf(webView).getLastEvaluatedJavascript()).isNull(); webView.evaluateJavascript("myScript", null); assertThat(shadowOf(webView).getLastEvaluatedJavascript()).isEqualTo("myScript");
@Override public void onPageFinished(WebView view, String url) { BroadCastManager.onPageFinished(FinestWebViewActivity.this, key, url); if (updateTitleFromHtml) { title.setText(view.getTitle()); urlTv.setText(UrlParser.getHost(url)); requestCenterLayout(); if (view.canGoBack() || view.canGoForward()) { back.setVisibility(showIconBack ? View.VISIBLE : View.GONE); forward.setVisibility(showIconForward ? View.VISIBLE : View.GONE); back.setEnabled(!disableIconBack && (rtl ? view.canGoForward() : view.canGoBack())); forward.setEnabled(!disableIconForward && (rtl ? view.canGoBack() : view.canGoForward())); } else { back.setVisibility(View.GONE); forward.setVisibility(View.GONE); if (injectJavaScript != null) { webView.evaluateJavascript(injectJavaScript, null);
private void renderPage(final boolean lazy) {
mWebView.evaluateJavascript(lazy ? "onRenderPage(true)" : "onRenderPage(false)", null);
@Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { view.evaluateJavascript("javascript:document.getElementById('username').value ='" + strUsername + "';javascript:document.getElementById('password').value = '" + strPassword + "';javascript:document.getElementById('loginButton').click();", null); } else { view.loadUrl("javascript:document.getElementById('username').value = '" + strUsername + "';javascript:document.getElementById('password').value = '" + strPassword + "';javascript:document.getElementById('loginButton').click();");
final String js = "javascript:document.getElementById('j_password').value='something';"; webView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { if (Build.VERSION.SDK_INT >= 19) { view.evaluateJavascript(js, new ValueCallback<String>() { @Override public void onReceiveValue(String s) { } } else { view.loadUrl(js);
@TargetApi(Build.VERSION_CODES.KITKAT) protected static void evaluateJavascript(WebView webView, String javascript) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { webView.evaluateJavascript(javascript, null); } else { webView.loadUrl("javascript:" + javascript);
/** * 调用js方法(4.4之上) @TargetApi(Build.VERSION_CODES.KITKAT) @SuppressLint("SetJavaScriptEnabled") private void callEvaluateJavascript(String method) { // 调用html页面中的js函数 webView.evaluateJavascript(method, null);
@TargetApi(Build.VERSION_CODES.KITKAT) protected static void evaluateJavascript(WebView webView, String javascript) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { webView.evaluateJavascript(javascript, null); } else { webView.loadUrl("javascript:" + javascript);
public void loadMarkdown(String markdown) { if (pageFinish) { String content = markdown.replace("\n", "\\n").replace("\"", "\\\"") .replace("'", "\\'"); if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { webView.evaluateJavascript("javascript:parseMarkdown(\"" + content + "\");", null); } else { webView.loadUrl("javascript:parseMarkdown(\"" + content + "\");");
private void test() { WebView webview = new WebView(this); webview.getSettings().setJavaScriptEnabled(true); webview.loadUrl(""); webview.evaluateJavascript("(function(){return {foo:"bar"}})()", new ValueCallback<String>() { @Override public void onReceiveValue(String s) { Log.e(TAG, s); // {foo:"bar"}
@Override public void evaluateJavascript(WebView webView, String script, ValueCallback resultCallback) { webView.evaluateJavascript(script, new ValueCallbackKitKat(resultCallback));
@Override public void evaluateJavascript(String script, @Nullable ValueCallback<String> resultCallback) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { super.evaluateJavascript(script, resultCallback); } else { loadUrl(String.format("%s%s", JAVA_SCRIPT_PROTOCOL, script));
private static void execJs(WebView webView, String jsCode) {
if (Thread.currentThread() != Looper.getMainLooper().getThread()) {
webView.post(() -> execJs(webView, jsCode));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
webView.evaluateJavascript(jsCode, null);
} else {
webView.loadUrl(jsCode);
private static void injectJavaScript(String url, WebView webView) { try { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { webView.evaluateJavascript(url, null); } else { webView.loadUrl(url); } catch (Exception exception) { // We can't do anything much here if there is an exception ignoring. // This is to avoid crash of users app gracefully. Clog.e(Clog.baseLogTag, "ANJAMImplementation.loadResult -- Caught EXCEPTION...", exception); Clog.e(Clog.baseLogTag, "ANJAMImplementation.loadResult -- ...Recovering with webView.loadUrl.");
public static void toggleVideo() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
webView.evaluateJavascript("(function() { return document.getElementsByTagName('video')[0].paused; })();",
value -> {
if (value.equals("true")) {
playVideo();
} else {
pauseVideo();
} else {
pauseVideo();