在Android中通过WebView控件,可以实现要加载的页面与Android方法相互调用,我们要实现WebView中的addJavascriptInterface方法,这样html才能调用android方法

第一步:新建一个Android工程,命名为WebViewDemo

第二步:修改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文件,代码如下
<html>      <mce:script language="javascript"><!--             function fillContent(){              document.getElementById("content").innerHTML =                    "This Content is showed by Android invoke Javascript function.";          }        // --></mce:script>      <body>      <a onClick="window.demo.startMap()" href="">Start GoogleMap</a>            A Demo ----Android and Javascript invoke each other.      Author:Frankiewei    </body>  </html>


第四步:修改主核心程序WebViewDemo.java,代码如下:
    package cn.caiwb.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()");                  }              });          }      }  


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

更多相关文章

  1. android手机屏幕适配方法
  2. Android ImageView控件的setMaxWidth、setMaxHeight不起作用
  3. 如何在XML设定android控件的颜色(十六进制颜色码)
  4. 安卓控件属性
  5. android百度地图标记点代码
  6. 更新android studio gradle 不成功解决方法
  7. Mono登录界面记住密码的控件
  8. Android 点击父控件让子控件也可以响应点击事件
  9. Android使用代码模拟HOME键的功能

随机推荐

  1. Unity开发备忘录000011:Unity发布Android
  2. android-gradle-plugin3.0.1源码分析
  3. Android(安卓)tesseract-orc之扫描身份证
  4. 【读书笔记】Android(安卓)输入系统
  5. Android设备通过USB线连接PC进行Socket通
  6. kotlin笔记 一
  7. Android中通过Messenger与Service实现进
  8. 浅谈Android事件分发机制
  9. android字符太长自动变成省略号
  10. Android的源代码结构