美文网首页
Android本地App与html5的交互

Android本地App与html5的交互

作者: fengyongge | 来源:发表于2016-10-20 00:28 被阅读1033次

介绍:

Android的开发中除了本地app的处理外,有时需要与html5的交互,与html5的交互无非两种情况。
1:html5调用app本地的方法。
例如,在一个网页上点击一个分享按钮控件,这时会弹出本地原生的一键分享界面,通过html5调用本地方法将值传给本地分享所需的值。
2:app调用html5的javaScript方法。
同样是分享,例如,在app上原生界面上点击分享按钮然后调用html5的javaScript方法,javaScript方法里面在调用本地原生的一键分享界面。

如何使用:

wv_demo.loadUrl(url);
wv_demo.setWebViewClient(new webViewClient());
wv_demo.getSettings().setJavaScriptEnabled(true);
wv_demo.addJavascriptInterface
(new mJavaScriptinterface(), "JSmeg");

 //javaScript调android本地方法   
 class mJavaScriptinterface {       
    @JavascriptInterface //不能缺少        
 public void getShareInfo(String desc, String url, String title, String img) {
            //本地方法       
 }}

private class webViewClient extends WebViewClient {    
@Override    
public boolean shouldOverrideUrlLoading(WebView view, String url) {       
   view.loadUrl(url);        
   return true;    
}    
@Override    
public void onPageFinished(WebView view, String url) {           
   super.onPageFinished(view, url);   
  
 }}

html5调用app本地的方法,JSmeg是html5上的javaScript方法里面的关键字,通过这个关键字将app本地方法绑定到一块,调用本地getShareInfo方法。

js = "var newscript = document.createElement(\"script\");";
js += "newscript.src=\"http://www.test.com/resource/js/androidgetinfo.js\";";
js += "document.body.appendChild(newscript);";
wv_demo.loadUrl(url);
wv_demo.setWebViewClient(new webViewClient());
wv_demo.getSettings().setJavaScriptEnabled(true);

bt_test1.setOnClickListener(new View.OnClickListener() {    
@Override    
public void onClick(View v) {        
    mHandler.post(new Runnable() {            
    @Override            
    public void run() {
        wv_demo.loadUrl("javascript:androidGetInfo()");
        //Android本地调用html中的javaScript 函数            
           }       
      });  
   }});

private class webViewClient extends WebViewClient {    
    @Override    
  public boolean shouldOverrideUrlLoading(WebView view, String url) {       
   view.loadUrl(url);        
   return true;    
}    
@Override    
public void onPageFinished(WebView view, String url) {           
   super.onPageFinished(view, url);   
   wv_demo.loadUrl("javascript:" + js);
  //加载网络javascript方法 
 }}

app调用html5的javaScript方法,首先app在onPageFinished方法里面先加载javaScript方法,然后在app本地按钮监听方法里面调用html中的javaScript 函数。

相关文章

网友评论

      本文标题:Android本地App与html5的交互

      本文链接:https://www.haomeiwen.com/subject/toqfuttx.html