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

 更新时间:2014年07月11日 10:25:55   投稿:junjie  
这篇文章主要介绍了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客户端网络预连接优化机制

    探究Android客户端网络预连接优化机制

    一般情况下,我们都是用一些封装好的网络框架去请求网络,对底层实现不甚关注,而大部分情况下也不需要特别关注处理。了解底层的一些实现,有益于我们对网络加载进行优化。本文就是关于根据http的连接复用机制来优化网络加载速度的原理与细节
    2021-06-06
  • 基于Android studio3.6的JNI教程之ncnn之语义分割ENet

    基于Android studio3.6的JNI教程之ncnn之语义分割ENet

    这篇文章主要介绍了基于Android studio3.6的JNI教程之ncnn之语义分割ENet的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2020-03-03
  • Android编程自定义进度条颜色的方法详解

    Android编程自定义进度条颜色的方法详解

    这篇文章主要介绍了Android编程自定义进度条颜色的方法,结合实例形式分析了Android进度条颜色相关的属性设置操作技巧,需要的朋友可以参考下
    2017-09-09
  • Android点击事件的实现方式

    Android点击事件的实现方式

    这篇文章主要为大家详细介绍了Android点击事件的实现方式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Android实现左右滑动切换图片

    Android实现左右滑动切换图片

    这篇文章主要为大家详细介绍了Android实现左右滑动切换图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • android开发基础教程—三种方式实现xml文件解析

    android开发基础教程—三种方式实现xml文件解析

    本文将介绍三种方式:sax方式/dom方式/pull方式实现xml文件解析,感兴趣的朋友可以了解下
    2013-01-01
  • Android自定义控件实现九宫格解锁功能

    Android自定义控件实现九宫格解锁功能

    这篇文章主要为大家详细介绍了Android自定义控件实现九宫格解锁功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Android APK反编译技巧深入讲解

    Android APK反编译技巧深入讲解

    这篇文章主要给大家介绍了关于Android APK反编译技巧的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • Android UI 中的 ListView列表控件的示例

    Android UI 中的 ListView列表控件的示例

    本篇文章主要介绍了Android UI 中的 ListView列表控件的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • Android通过PHP服务器实现登录功能

    Android通过PHP服务器实现登录功能

    这篇文章主要为大家详细介绍了Android通过PHP服务器实现登录功能的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01

最新评论