1,在android API Level 17及以上的版本中,就会出现js调用不了android的代码,这是版本兼容的问题,需要在调用的方法上面加一个注解:@JavascriptInterface,这个注解需要导入一个包:import android.webkit.JavascriptInterface;
//js代码
下面是代码:
01 | @Override |
02 | public void onCreate(Bundle savedInstanceState) { |
03 | requestWindowFeature(Window.FEATURE_NO_TITLE); |
04 | super .onCreate(savedInstanceState); |
05 | this .loadUrl( "file:///android_asset/www/index.html" ); |
06 | |
07 | //给js设置调用的方法 |
08 | this .appView.addJavascriptInterface( new JavaScripdtObject(), "android" ); |
09 | |
10 | } |
11 | /** |
12 | * 供js调用的对象方法 |
13 | * |
14 | * @author YUJIAN |
15 | * |
16 | */ |
17 | public class JavaScripdtObject { |
18 |
19 | @JavascriptInterface //加入这个注解 |
20 | public void runAndroidMethod(String str) { |
21 | Toast.makeText(MainActivity. this , "被js调用" +str, Toast.LENGTH_SHORT) |
22 | .show(); |
23 | } |
24 | } |
01 | function getNode4() |
02 | { |
03 | var str = "javascrip木德" ; |
04 | |
05 | //调用android代码 |
06 | window.android.runAndroidMethod(str); |
07 | |
08 | } |
09 | </script> |
10 |
11 | <input type= "button" value= "获取页面中的节点" onclick= "getNode4()" /> |