//目录结构
//效果
//一起来看下代码
//index.html HTML页面
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
- <script>
- function showInfo(str)
- {
- document.getElementById("info").innerHTML=str;
- }
- </script>
- </head>
- <body>
- 重Android传来的值是:<span id="info"> </span>
- <br>
- <a href="#" onclick="window.android.callAndroid('你好,Android')">
- call Android from javascript
- </a>
- </body>
- </html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<script>
function showInfo(str)
{
document.getElementById("info").innerHTML=str;
}
</script>
</head>
<body>
重Android传来的值是:<span id="info"> </span>
<br>
<a href="#" οnclick="window.android.callAndroid('你好,Android')">
call Android from javascript
</a>
</body>
</html>
//main.xml主布局
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <Button
- android:id="@+id/sendtojs"
- android:layout_height="wrap_content"
- android:layout_width="fill_parent"
- android:text="发送数据到JS"
- />
- <TextView
- android:id="@+id/fromjsdata"
- android:layout_height="wrap_content"
- android:layout_width="fill_parent"
- />
- <EditText
- android:id="@+id/sendText"
- android:layout_height="wrap_content"
- android:layout_width="fill_parent"
- />
- <WebView
- android:id="@+id/web"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- />
- </LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/sendtojs"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="发送数据到JS"
/>
<TextView
android:id="@+id/fromjsdata"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
/>
<EditText
android:id="@+id/sendText"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
/>
<WebView
android:id="@+id/web"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
//JSJAVAActivity.java JAVA控制代码
- package sn.len.jsjava;
- import android.app.Activity;
- import android.os.Bundle;
- import android.os.Handler;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.webkit.WebView;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.TextView;
- public class JSJAVAActivity extends Activity implements OnClickListener
- {
- private WebView web_webView;
- private Button but_sendToJs;
- private EditText edi_sendText;
- private TextView tex_fromjsdata;
- private Handler handler = new Handler();
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- web_webView=(WebView)findViewById(R.id.web);
- edi_sendText=(EditText)findViewById(R.id.sendText);
- but_sendToJs=(Button)findViewById(R.id.sendtojs);
- tex_fromjsdata=(TextView)findViewById(R.id.fromjsdata);
- but_sendToJs.setOnClickListener(this);
- //开启访问JS代码功能
- web_webView.getSettings().setJavaScriptEnabled(true);
- //根据地址加载网页
- //文件头: file://
- //文件路径: /android_asset/index.html
- web_webView.loadUrl("file:///android_asset/index.html");
- //参数1,把new SendToJs()这个对象构建到WEB浏览器中
- //参数2,提供在WEB浏览器中好让javascript访问的对象
- //例如: 在WEB中,javascript调用callAndroid(value)方法写法为window.android.callAndroid('value');
- web_webView.addJavascriptInterface(new SendToJs(), "android");
- }
- @Override
- public void onClick(View v)
- {
- //向浏览器发送数据,调用JS的showInfo函数
- web_webView.loadUrl("javascript:showInfo('"+edi_sendText.getText().toString()+"')");
- }
- class SendToJs
- {
- public void callAndroid(final String arg)
- {
- //利用Handler更新UI
- handler.post
- (
- new Runnable()
- {
- @Override
- public void run()
- {
- //设置重JS发过来的数据
- tex_fromjsdata.setText("重javascript发来的数据是:"+arg);
- }
- }
- );
- }
- }
- }