当前位置: 首页 > 编程笔记 >

android中WebView和javascript实现数据交互实例

唐弘和
2023-03-14
本文向大家介绍android中WebView和javascript实现数据交互实例,包括了android中WebView和javascript实现数据交互实例的使用技巧和注意事项,需要的朋友参考一下

在看懂这篇文章之前首先要有javascript基础。

(1) js调用android的方法:

WebView wView;

wView. addJavascriptInterface (Object obj, String interfaceName);

是实例化一个对象,在html的js中调用,第二个参数是实例化对象的别名,如果要使用这个obj,则在js中使用的名字
就是interfaceName。
public class jsWebDemo extends Activity {   

    WebView wView;

    /** Called when the activity is first created. */      @Override      public void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           setContentView(R.layout.main);            wView = (WebView)findViewById(R.id.wv1);                     WebSettings wSet = wView.getSettings();           wSet.setJavaScriptEnabled(true); 

        ProxyBridge pBridge = new ProxyBridge();           wView.addJavascriptInterface(pBridge, "AliansBridge");                    wView.loadUrl("file:///android_asset/index.html");                  }      private class ProxyBridge {     public int one () {      return 1;     }    }     }


来看一下index.html的内容:
 

<html>

  <mce:script language="javascript"><!--

  

        /* This function is invoked by the activity */   

        function wave() {   

            alert("1");   

            document.getElementById("droid").src="android_waving.png";   

            alert("2");   

        }   

    

// --></mce:script>

<body>      

<div id="output">Test page.</div>     

<a onClick="window.demo.clickOnAndroid()">  <div style="width:100px;               margin:0px auto;               padding:10px;               text-align:center;               border:2px solid #202020;" >                  <img id="droid" src="android_normal.png" mce_src="android_normal.png"/><br>                  Click me!           </div>  </a> <input type="submit" value="change to 1" onclick="document.getElementById('output').innerHTML

=AliansBridge.one()" />      </body> </html>


这里的AliansBridge即是调用的JAVA对象。
要注意的是,如果你只有一个方法需要被js调用只new一个对象就行:
ProxyBridge pBridge = new ProxyBridge();
wView.addJavascriptInterface(pBridge, "AliansBridge");
如果你需要调用好多个方法,就要把整个android程序所在的类本身实例化传递进去:
wView.addJavascriptInterface(this, "AliansBridge");
(2) android调用js的方法:wView.setWebChromeClient (WebChromeClient client)
要用到Handler更新UI,Handler mHandler = new Handler();
mWebView.setWebChromeClient(new MyWebChromeClient());                

    mWebView.addJavascriptInterface(new Object(){

    /**      

     * This is not called on the UI thread. Post a runnable to invoke      

     * loadUrl on the UI thread.      

     */        

    public void clickOnAndroid() {        

        mHandler.post(new Runnable() {         

            public void run() {         

                mWebView.loadUrl("javascript:wave()");         

            }         

        });                 

    } 

 }, "demo");

同理,在html中必须有一个名为demo的对象调用clickOnAndroid()方法。
/**      

 * Provides a hook for calling "alert" from javascript. Useful for      

 * debugging your javascript.      

 */        

final class MyWebChromeClient extends WebChromeClient {         

    @Override     

    public boolean onJsAlert(WebView view, String url, String message,      

            JsResult result) {                      

        result.confirm();       

    return super.onJsAlert(view, url, message, result);                        

    } 

}

 类似资料:
  • 本文向大家介绍Android中WebView与Js交互的实现方法,包括了Android中WebView与Js交互的实现方法的使用技巧和注意事项,需要的朋友参考一下 获取WebView对象 调用WebView对象的getSettings()方法,获取WebSettings对象 调用WebSettings对象的setJavaScriptEnabled()方法,设置js可用,参数:布尔值 在判断是否支持

  • 本文向大家介绍Android总结之WebView与Javascript交互(互相调用),包括了Android总结之WebView与Javascript交互(互相调用)的使用技巧和注意事项,需要的朋友参考一下 前言: 最近公司的App为了加快开发效率选择了一部分功能采用H5开发,从目前市面的大部分App来讲,大致分成Native App、Web App、Hybrid App三种方式,个人觉得目前以H

  • 本文向大家介绍Flutter 和 Android 互相传递数据的实现,包括了Flutter 和 Android 互相传递数据的实现的使用技巧和注意事项,需要的朋友参考一下 (一)Android代码设置 1,打开Android Studio 创建一个应用程序,包名dev.android.book 2, 创建一个MyApplication ,应用在AndroidManifest.xml文件中的appl

  • 本文向大家介绍Android实现与Apache Tomcat服务器数据交互(MySql数据库),包括了Android实现与Apache Tomcat服务器数据交互(MySql数据库)的使用技巧和注意事项,需要的朋友参考一下 需求:Android客户端连接服务器端MySQL数据库中的内容 环境部署 服务器:apache-tomcat-8.5.9 语言版本:Java 1.8.0_101 编译环境:Ec

  • 本文向大家介绍Android实现webview实例代码,包括了Android实现webview实例代码的使用技巧和注意事项,需要的朋友参考一下 webview是一个很简单的功能,代码没有什么逻辑上的难度,只是需要注意权限上的问题。其实在安卓编程的过程当中,权限问题可以算是出现的比较多的BUG。 1.MainAct 2.最重要的是在manifest中添加权限,否则是无法显示的。 以上就是本文的全部内

  • 本文向大家介绍php基于session实现数据库交互的类实例,包括了php基于session实现数据库交互的类实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php基于session实现数据库交互的类。分享给大家供大家参考。具体如下: 希望本文所述对大家的php程序设计有所帮助。