在android API Level 17及以上的版本中,就会出现js调用不了android的代码,这是版本兼容问题,之前做过相关的东西查了好久才找到相关答案。
需要在调用的方法上面加一个注解:@JavascriptInterface,这个注解需要导入一个包:import android.webkit.JavascriptInterface;
下面是代码:
android端java代码
@Override
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
this.loadUrl("file:///android_asset/www/index.html");
//给js设置调用的方法
this.appView.addJavascriptInterface(new JavaScripdtObject(), "android");
}
/**
* 供js调用的对象方法
*
* @author YUJIAN
*
*/
public class JavaScripdtObject {
@JavascriptInterface//加入这个注解
public void runAndroidMethod(String str) {
Toast.makeText(MainActivity.this, "被js调用"+str, Toast.LENGTH_SHORT)
.show();
}
}
js调用代码:
function getNode4()
{
var str = "javascrip木德";
//调用android代码
window.android.runAndroidMethod(str);
}
</script>
<input type="button" value="获取页面中的节点" οnclick="getNode4()" />
在引用中再加入
import android.webkit.JavascriptInterface
这个引用即可
原文: 点击打开链接