Android 和 js 相互调用

参考博客:

http://www.igooda.cn/jzjl/20141212737.html

http://blog.sina.com.cn/s/blog_8cfbb992010156ed.html

java代码:

@SuppressLint("SetJavaScriptEnabled")
public class MainActivity extends Activity {

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

	@SuppressLint("JavascriptInterface")
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		setContentView(R.layout.activity_main);

		// 将WebView实例化  
		mWebView = (WebView) this.findViewById(R.id.webView);
		// WebView打开权限
		mWebView.getSettings().setJavaScriptEnabled(true);
		//如果需要调用js中的alert告警弹出需要设置一下参数
		mWebView.setWebChromeClient(new WebChromeClient() {});
		// 使得获取焦点以后可以使用软键盘
		mWebView.requestFocusFromTouch();
		mWebView.setWebViewClient(new WebViewClient(){
			@Override
			public void onPageFinished(WebView view, String url) {
				super.onPageFinished(view, url);
				Log.e("Web_js", "加载完成");
			}
		});
		// 允许使用JAVASCRIPT脚本
		mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "ncp");
		mWebView.loadUrl("file:///android_asset/Test.html");
	}
	
	public class DemoJavaScriptInterface {
		@JavascriptInterface // 在4.2以后的平台上版本中需要设置该注解
		public void clickOnAndroid_saveIdnumber(final String value) {
			Log.e("Web_js", "前台传来的值:" + value);
			mHandler.post(new Runnable() {
				public void run() {
					// 此处调用 HTML 中的javaScript 函数
					Log.e("Web_js", "去调用WAVE");  
					// 不传参数
					// mWebView.loadUrl("javascript:wave()");
					// 传二个参数
					//mWebView.loadUrl("javascript:wave('" + value + "','" + value + "')");
					// 传一个参数
					mWebView.loadUrl("javascript:wave('" + value + "')");
				}
			});
		}

		@JavascriptInterface  在4.2以后的平台上版本中需要设置该注解
		public void user(String id) {   
			Toast.makeText(MainActivity.this, id, Toast.LENGTH_SHORT).show();
		}
	}


accests中放入html , html代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>

<script type="text/javascript">


function next(){

  var textvalue = (document.getElementById('num1').value);

  window.ncp.clickOnAndroid_saveIdnumber(textvalue);
}

function wave(value) { 
       document.getElementById('num2').value= value;
} 
</script>
</head>

<body >
<table width="200" height="150" border="0" cellpadding="0" cellspacing="0" bordercolor="F2F2F2">
  <tr>
    <td>  

    <input type="text" id="num1" />

    <input type="text" id="num2"/>

      <input type="button"  name="Submit1" value="Submit1" οnclick="next();" class="BOTTOM" style= "background-color:#F2F2F2;border-width:0px "/>
  </td>
  </tr>
</table>
<img src="" height="100" width="100" οnclick="javascript:ncp.user('200')"/>
</body>
</html>


调用java代码中函数的两种方式

οnclick="javascript:ncp.user('200')

window.ncp.clickOnAndroid_saveIdnumber(textvalue);

其中 :mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "ncp"); 的ncp要与以上一一对应

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值