您的位置:首页 > 移动开发 > Android开发

Android JAVA和JS的通信

2012-01-12 14:43 375 查看
//目录结构



//效果



//一起来看下代码

//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>


//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>


//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);
}
}
);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: