WebView与js的交互

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebView与js的交互相关的知识,希望对你有一定的参考价值。

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");
    myWebView.loadUrl("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里直接调用的 */
  public void startActivity() {

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

 

以上是关于WebView与js的交互的主要内容,如果未能解决你的问题,请参考以下文章

WebView与 JS 交互方式

Android WebView与JS的交互方式 最全面汇总

Android:你要的WebView与 JS 交互方式 都在这里了

android使用WebView里的js与android进行交互!

Android WebView与JS的数据交互

android webview与js简单的交互方案