android 本地html JS与android 交互

来源:互联网 发布:演化算法 编辑:程序博客网 时间:2024/05/17 09:42
@SuppressLint("SetJavaScriptEnabled")public class TestWebviewActivity extends Activity {WebView contentWebView;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.test_web_layout);contentWebView = (WebView) findViewById(R.id.webView);// 启用javascriptcontentWebView.getSettings().setJavaScriptEnabled(true);// 测试带图的文的网站contentWebView.loadUrl("file:///android_asset/test.html");// 添加js交互接口类,并起别名 webtestcontentWebView.addJavascriptInterface(this, "webtest");}/** * JS调用本地android方法: * 对应html中 window.webtest.jsInvokeJava('JS invoke java  code'); * 方法名:jsInvokeJava * @param arg 参数 */public void jsInvokeJava(String arg) {Log.i("songe", "JS调用本地android方法  带参数:" + arg);}/** * JS调用本地android方法  * 对应html中window.webtest.jsInvokeJava(); * 方法名:jsInvokeJava */public void jsInvokeJava() {Log.i("songe", "JS调用本地android方法");}/** * 自定义button事件 * 方法名:click * @param v */public void click(View v){        switch (v.getId()) {case R.id.javacalljs://按下button 调用html中的javaCallJS()脚本contentWebView.loadUrl("javascript:javaCallJS()");break;case R.id.javaCallJsWithArgs://按下button 调用html中的javaCallJsWithArgs()脚本contentWebView.loadUrl("javascript:javaCallJsWithArgs('hello world')");break;default:break;}}}


本地html文件:

<html><head><meta http-equiv="Content-Type"content="text/html;charset=utf-8"><script type="text/javascript">//自定义jsfunction javaCallJS(){ document.getElementById("content").innerHTML +=            "<br\>java调用JS函数";}//自定义jsfunction javaCallJsWithArgs(arg){ document.getElementById("content").innerHTML +=            ("<br\>"+arg);}</script></head><body  bgcolor="#ffff00">  <p align="center">Test html 区域</p>  <br/><button onClick="window.webtest.jsInvokeJava()">点击调用java代码</button><br/><br/><br/><button onClick="window.webtest.jsInvokeJava('JS invoke java  code')" >点击调用java代码并传入参数</button><br/><br/><br/><br/><div id="content">显示内容</div></body></html>


test_web_layout.xml 布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context=".MainActivity" >        <Button        android:id="@+id/javacalljs"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="16dp"        android:onClick="click"        android:text="本android调用本地js" />    <Button        android:id="@+id/javaCallJsWithArgs"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:onClick="click"        android:text="android调用本地js(带参)" />    <WebView        android:id="@+id/webView"        android:layout_width="match_parent"        android:layout_height="match_parent"/></LinearLayout>


0 0
原创粉丝点击