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);                       
    }
}

时间: 2024-11-10 10:33:50

android中WebView和javascript实现数据交互实例的相关文章

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

在看懂这篇文章之前首先要有javascript基础. (1) js调用android的方法: 复制代码 代码如下: WebView wView: wView. addJavascriptInterface (Object obj, String interfaceName); 是实例化一个对象,在html的js中调用,第二个参数是实例化对象的别名,如果要使用这个obj,则在js中使用的名字 就是interfaceName. 复制代码 代码如下: public class jsWebDemo ex

Android使用WebView加载HTML数据交互问题

问题描述 Android使用WebView加载HTML数据交互问题 Android开发在使用WebView加载HTML界面时,如何在Android的JAVA类中获取HTML界面的数据?求大神指教,有代码最好 解决方案 andorid和js交互最流行的方式就是用JSBridge,可以上github看看,这个不是简单的一两句代码就能搞定的,需要一个很好的框架支撑. 解决方案二: android中动态加载webview,webview加载html数据,并且隐藏滚动条android 使用webview加

解析Android中webview和js之间的交互_Android

1.android中利用webview调用网页上的js代码.Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true,,然后通过loadUrl就可以直接进行调用,如下所示:mWebView.getSettings().setJavaScriptEnabled(true);mWebView.loadUrl("javascript:test()"); 2. 网页上调用android中java代码的方法在网页中

解析Android中webview和js之间的交互

1.android中利用webview调用网页上的js代码.Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true,,然后通过loadUrl就可以直接进行调用,如下所示:mWebView.getSettings().setJavaScriptEnabled(true);mWebView.loadUrl("javascript:test()"); 2. 网页上调用android中java代码的方法在网页中

Android中Webview使用javascript调用事先定义好的Java函数

 1. 首先定义好一个类,专们用于给javascript调用 public class JavaScriptInterface { // share your news public void share(String newsImageUrl, String newsTitle, String newsUrl) { Intent intent = new Intent(ActivityHomeRang.this, ActivityShare.class); Bundle news = new

Android WebView 与JS的数据交互

转自 :http://blog.csdn.net/cappuccinolau/article/details/8262821 关于WebView 我们知道目前android市场上的一些应用采用的开发方式大致分为三种:Native App.Web App.Hybrid App.本文主要是Hybrid App中实现的主要技术native组件与js的数据交互的理解以及实现.   Android API中提供了WebView组件来实现对html的渲染.所谓的HybridApp开发方式即是汇集了HTML5

Android中WebView与Js交互的实现方法_Android

获取WebView对象 调用WebView对象的getSettings()方法,获取WebSettings对象 调用WebSettings对象的setJavaScriptEnabled()方法,设置js可用,参数:布尔值 在判断是否支持js的时候,不要用alert(),默认不起作用,可以先用document.write()测试 调用WebView对象的addJavascriptInterface(obj, interfaceName)方法,添加js接口,参数:Object对象,String接口名

Android中WebView与Js交互的实现方法

获取WebView对象 调用WebView对象的getSettings()方法,获取WebSettings对象 调用WebSettings对象的setJavaScriptEnabled()方法,设置js可用,参数:布尔值 在判断是否支持js的时候,不要用alert(),默认不起作用,可以先用document.write()测试 调用WebView对象的addJavascriptInterface(obj, interfaceName)方法,添加js接口,参数:Object对象,String接口名

Android中WebView的一些简单用法_Android

Android中WebView的一些简单用法 一直想写一个关于 WebView 控件的 一些简单运用,都没什么时间,这次也是挤出时间写的,里面的一些基础知识就等有时间再更新讲解一下,今天就先把项目出来做一些简单介绍,过多的内容可以看我的源码,都传到github上了. 下面是项目的效果图: 应用用到的是 MVP 设计模式,对这种模式还不太了解的可以先自行google一下,不然项目估计会看的晕,虽然我的代码都很简洁的. 对于MVP 可以带着一个思路看源码,那就是 activity(或其他组件)通过