JS传递值给android

来源:互联网 发布:微波炉品牌 知乎 编辑:程序博客网 时间:2024/05/18 10:20

原生和H5交互挺多的,最近也有朋友再问。这儿我写个简单的例子给大家 直接贴代码

js的

<!DOCTYPE html><html><head>    <meta charset="utf-8"></head><body><p>输入数字并提交:</p><input id="id1" type="number"><button onclick="myFunction()">提交给android</button><p id="demo"></p><script>function myFunction() {    var inpObj = document.getElementById("id1").value;    inpObj=inpObj+"";    window.android.get(inpObj)}</script></body></html>
android端接受的:

package com.example.bovenn.jsandroiddemo;import android.annotation.SuppressLint;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.webkit.JavascriptInterface;import android.webkit.WebSettings;import android.webkit.WebView;public class MainActivity extends AppCompatActivity {    @SuppressLint("JavascriptInterface")    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        WebView webView = ((WebView) findViewById(R.id.webView));        WebSettings webSettings = webView.getSettings();        webSettings.setJavaScriptEnabled(true);        webSettings.setDefaultTextEncodingName("utf-8");        webView.addJavascriptInterface(new JS(), "android");        webView.loadUrl("file:///android_asset/demo.html");    }    class JS{        @JavascriptInterface        public void get(String p){            System.out.println("打印"+p);        }    }}

再JS 这个类里面的get方法接受网页传递的信息。解释一下:JS 的

    window.android.get(inpObj)
是关键代码其中inpObj必须是String类型。android 这个字和android代码中
        webView.addJavascriptInterface(new JS(), "android");
这儿要对应。window.android.get("传递的值"),中的get要和android中定义JS类里面的get方法名字相同。

没了。


0 0