在Android中通过WebView控件,可以实现要加载的页面与Android方法相互调用,我们要实现WebView中的addJavascriptInterface方法,这样html才能调用android方法,在这里我个人觉得有点和DWR相似。

为了让大家容易理解,我写了一个简单的Demo,具体步骤如下:

第一步:新建一个Android工程,命名为WebViewDemo(这里我在assets里定义了一个html页面)。

第二步:修改main.xml布局文件,增加了一个WebView控件还有Button控件,代码如下:

<?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" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Welcome to Mr Wei's Blog." /> <WebView android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Change the webview content" /> </LinearLayout>

第三步:在assets目录下新建一个demo.html文件,代码如下(这里不知道为何多了mce:这几个东东,<script></script>这样是对的):

<html> <mce:script language="javascript"><!-- function fillContent(){ document.getElementById("content").innerHTML = "This Content is showed by Android invoke Javascript function."; } // --></mce:script> <body> <p><a onClick="window.demo.startMap()" href="">Start GoogleMap</a></p> <p id="content"></p> <p>A Demo ----Android and Javascript invoke each other.</p> <p>Author:Frankiewei</p> </body> </html>

第四步:修改主核心程序WebViewDemo.java,代码如下:

package com.tutor.webwiewdemo; import android.app.Activity; import android.content.ComponentName; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.webkit.WebSettings; import android.webkit.WebView; import android.widget.Button; public class WebViewDemo extends Activity { private WebView mWebView; private Button mButton; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setupViews(); } //初始化 private void setupViews() { mWebView = (WebView) findViewById(R.id.webview); WebSettings mWebSettings = mWebView.getSettings(); //加上这句话才能使用javascript方法 mWebSettings.setJavaScriptEnabled(true); //增加接口方法,让html页面调用 mWebView.addJavascriptInterface(new Object() { //这里我定义了一个打开地图应用的方法 public void startMap() { Intent mIntent = new Intent(); ComponentName component = new ComponentName( "com.google.android.apps.maps", "com.google.android.maps.MapsActivity"); mIntent.setComponent(component); startActivity(mIntent); } }, "demo"); //加载页面 mWebView.loadUrl("file:///android_asset/demo.html"); mButton = (Button) findViewById(R.id.button); //给button添加事件响应,执行JavaScript的fillContent()方法 mButton.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { mWebView.loadUrl("javascript:fillContent()"); } }); } }

第五步:运行上述工程,查看效果。

首界面 点击按钮时,html内容改变

点击html的startGoogleMap启动地图应用

更多相关文章

  1. 【Android(安卓)笔记 五】 Android(安卓)Sensor感应器介绍(一)重力
  2. Android安装卸载程序具体操作方法解析
  3. Android的消息机制
  4. android中的后退键——onBackPressed()的使用
  5. Fragment
  6. ListActivity setContentView 错误
  7. Android中使用HttpURLConnection和HttpClient发送Http请求
  8. Android开发实现计算器的例子
  9. android 抽屉式滑动demo

随机推荐

  1. 动态修改ViewPagerIndicator CustomTabPa
  2. Android设计开发要必用的Color.xml文件整
  3. Android(安卓)ScrollView嵌套ScrollView
  4. Android常用的多渠道打包方式整理(不断更
  5. Android(安卓)浅谈MatrixCursor
  6. Android实现获取短信验证码并自动填写功
  7. Android(安卓)多线程通信 Handler
  8. android半透叠加对照表
  9. ubuntu 14.04搭建android编译环境
  10. Android中取消系统标题栏的几种方式