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

[html] view plain copy
 
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4.     <meta charset="utf-8">  
  5. </head>  
  6. <body>  
  7.   
  8. <p>输入数字并提交:</p>  
  9.   
  10. <input id="id1" type="number">  
  11. <button onclick="myFunction()">提交给android</button>  
  12. <id="demo"></p>  
  13.   
  14. <script>  
  15. function myFunction() {  
  16.     var inpObj = document.getElementById("id1").value;  
  17.     inpObj=inpObj+"";  
  18.     window.android.get(inpObj)  
  19. }  
  20. </script>  
  21.   
  22. </body>  
  23. </html>  

android端接受的:

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. package com.example.bovenn.jsandroiddemo;  
  2.   
  3. import android.annotation.SuppressLint;  
  4. import android.support.v7.app.AppCompatActivity;  
  5. import android.os.Bundle;  
  6. import android.webkit.JavascriptInterface;  
  7. import android.webkit.WebSettings;  
  8. import android.webkit.WebView;  
  9.   
  10. public class MainActivity extends AppCompatActivity {  
  11.   
  12.     @SuppressLint("JavascriptInterface")  
  13.     @Override  
  14.     protected void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         setContentView(R.layout.activity_main);  
  17.         WebView webView = ((WebView) findViewById(R.id.webView));  
  18.         WebSettings webSettings = webView.getSettings();  
  19.         webSettings.setJavaScriptEnabled(true);  
  20.         webSettings.setDefaultTextEncodingName("utf-8");  
  21.         webView.addJavascriptInterface(new JS(), "android");  
  22.         webView.loadUrl("file:///android_asset/demo.html");  
  23.     }  
  24.   
  25.     class JS{  
  26.         @JavascriptInterface  
  27.         public void get(String p){  
  28.             System.out.println("打印"+p);  
  29.         }  
  30.   
  31.     }  
  32. }  

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

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. window.android.get(inpObj)  

是关键代码其中inpObj必须是String类型。android 这个字和android代码中

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. webView.addJavascriptInterface(new JS(), "android");  

这儿要对应。window.android.get("传递的值"),中的get要和android中定义JS类里面的get方法名字相同。

原文地址:https://www.cnblogs.com/shenlaiyaoshi/p/6636158.html