android应用中嵌入网页是现在常用的,那么html中如何与android中事件进行绑定呢?

1、提供如下的js代码:

<script type="text/javascript" >
  function startActivity() {
    android.startActivity(); 
  }
</script>

<script type="text/javascript">
  $('#entry_button').on('click',function() {
    startActivity();
  });
</script>

 

2、提供调用webview的activty:

package com.lia.webview;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebResourceResponse;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class WebViewActivity extends Activity {
  private WebView myWebView;

  @SuppressLint("SetJavaScriptEnabled")
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.webview);

    myWebView = (WebView) findViewById(R.id.myWebView);
    //如果访问的页面中有Javascript,则webview必须设置支持Javascript。
    myWebView.getSettings().setJavaScriptEnabled(true);
    // 与js交互,JavaScriptinterface 是个接口,与js交互时用到的,这个接口实现了从网页跳到app中的activity 的方法,特别重要
    myWebView.addJavascriptInterface(new JavaScriptinterface(this), "android"); 

    //网页不在android内置浏览器里,在webView空间中;

    myWebView.setWebViewClient(new WebViewClient() {
      @Override
      public boolean shouldOverrideUrlLoading(WebView view, String url) {

        //加载至WebView控件中
        view.loadUrl(url);
        return true;
      }

    @Override
    public void onReceivedError(WebView view, WebResourceRequest request,       WebResourceError error) {
      super.onReceivedError(view, request, error);
      LogUtil.d("error--->" + error.toString());
    }

    @Override
    public void onReceivedHttpError(WebView view, WebResourceRequest request,       WebResourceResponse errorResponse) {
      super.onReceivedHttpError(view, request, errorResponse);
    }

    @Override
    public void onPageFinished(WebView view, String url) {

      //android端调网页中的api
      myWebView.loadUrl("javascript:js中对应的方法");
    }
    });

    myWebView.loadUrl("file:///android_asset/index.html");
  }
}

本地网页:file:///android_asset/index.html

 

3、提供与js交互中需要用到的方法:

package com.lia.webview;

import android.app.Activity;
import android.content.Intent;

public class JavaScriptinterface {

  Activity mActivity;

  public JavaScriptinterface(Activity mActivity) {
    this.mActivity = mActivity;
  }

  /** 与js交互时用到的方法,在js里直接调用的 */

  @JavaScriptinterface
  public void startActivity() {

    //此处响应了js中的startActivity()方法,进行跳转;
    Intent intent = new Intent();
    intent.setClass(mActivity, MainActvity.class);
    mActivity.startActivity(intent);
    mActivity.finish();
  }
}

 

posted on 2016-02-24 15:17  艾先生  阅读(1683)  评论(0)    收藏  举报