Android 和 js 互相调用

今天花了2个小时才搞明白的,写出来给大家分享一下

它可以与js互相调用

首先第一步是:写一个html,代码为:

<html>
<head>
<meta http-equiv="Content-Type"  content="text/html;charset=gb2312"> 
<script type="text/javascript">
function  mobiKingngShare(title) {//定义的js函数
window.android.showToast(title);//调用android封装的方法
}
</script>
</head>
<body>
<a onClick="window.android.clickOnAndroid('被点击!')">点击调用java代码</a><br/> //clickOnAndroid为android 封装的方法
</body>
</html>

第二步:

private WebView mWebView;
private Handler mHandler = new Handler();


@Override
public void onCreate(Bundle icicle) {


super.onCreate(icicle);
setContentView(R.layout.activity_main);
// 获得浏览器组件
// WebView就是一个简单的浏览器
// android浏览器源码存在于LINUX\android\package\apps\Browser中
// 里面的所有操作都是围绕WebView来展开的
mWebView = (WebView) findViewById(R.id.webview);
// WebSettings 几乎浏览器的所有设置都在该类中进行
WebSettings webSettings = mWebView.getSettings();
webSettings.setSavePassword(false);
webSettings.setSaveFormData(false);
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(false);
/*
* DemoJavaScriptInterface类为js调用android服务器端提供接口 android
* 作为DemoJavaScriptInterface类的客户端接口被js调用
* 调用的具体方法在DemoJavaScriptInterface中定义: 例如该实例中的clickOnAndroid
*/
mWebView.addJavascriptInterface(new DemoJavaScriptInterface(),
"android");
mWebView.loadUrl("file:///android_asset/wt.html");
}


final class DemoJavaScriptInterface {


DemoJavaScriptInterface() {
}


/**
* 该方法被点击时调用
*/
public void clickOnAndroid(final String title) {
mHandler.post(new Runnable() {
public void run() {
// 调用js中的onJsAndroid方法
mWebView.loadUrl("javascript:mobiKingngShare('" + title
+ "')");
}
});
}


public void showToast(String title) {
Toast.makeText(MainActivity.this, title, Toast.LENGTH_SHORT).show();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值