在4.2以前,JavaScript与Java交互如下:

webview.getSetting().setJavaScriptEnable(true);webview.addJavascriptInterface(new Object(){            public void clickOnAndroid(){                 handler.post(new Runnable() {                    @Override                    public void run() {                        System.err.println("javascript 调用 java");                    }                });             }         }, "javascript对象");

在4.2以后,为了使JavaScript能够调用Java的方法,需要为向JavaScript暴露的Java方法添加@JavascriptInteface 注解。否则在targetSdkVersion 17以上的版本,将会报错:
E/Web Console:Uncaught Type Error:Object [object Object] has no method ‘clickOnAndroid’

 webview.addJavascriptInterface(new Object(){             @JavascriptInterface            public void clickOnAndroid(){                 handler.post(new Runnable() {                    @Override                    public void run() {                        System.err.println("javascript 调用 java");                    }                });             }         }, "javascript对象");

简单案例:

package com.example.webviewdemo;@SuppressLint("SetJavaScriptEnabled")public class MainActivity extends Activity {    private WebView webview;    private Handler handler;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();    }    private void initView() {        webview = (WebView) findViewById(R.id.webview);        WebSettings settings = webview.getSettings();        settings.setJavaScriptEnabled(true);         handler = new Handler();         webview.addJavascriptInterface(new Object(){             @JavascriptInterface            public void clickOnAndroid(){                 handler.post(new Runnable() {                    @Override                    public void run() {                        webview.loadUrl("javascript:testJS()");                    }                });             }         }, "demo");        webview.loadUrl("file:///android_asset/demo.html");    }}

js代码(放在assets目录下):

<html><script language="javascript"> function testJS() { document.getElementById("myPic").src="test.png"; } </script><body>  <a onClick="window.demo.clickOnAndroid()">  <img id="myPic" src="ic_launcher.png" mce_src="ic_launcher.png"/><br>切换</a></body></html>

更多相关文章

  1. Android中的onCreateOptionsMenu()方法和onOptionsItemSelected()方
  2. 关于androidSDK更新缓慢的解决方法(以W7为例)
  3. 执行Android JUnit测试出现java.net.SocketException: Permissio
  4. [android]notifyDataSetChanged方法
  5. Android后台发送短信方法
  6. Android 检查应用是否安装、唤起的方法
  7. Could not find com.android.tools.build:aapt2:3.3.2-5309881.
  8. Android实现计时与倒计时的几种方法
  9. Android studio移动项目到另外一个文件夹,结果不能安装的解决方法

随机推荐

  1. Android调用JNI出错 java.lang.Unsatisfi
  2. Android(安卓)编程下 Touch 事件的分发和
  3. Android自动检测版本及自动升级
  4. Android(安卓)中文 API (90) —— Window
  5. Android各版本 内外卡真实路径
  6. Android基础类之BaseAdapter
  7. Android(安卓)实时视频采集/编码/传输/解
  8. [Android] 一份代码,两个版本
  9. Android开发实战三之导入现有Android工程
  10. Android设置透明、半透明等效果