混合app开发

来源:互联网 发布:王者荣耀骂人软件 编辑:程序博客网 时间:2024/05/01 23:52
最近做项目,遇到H5和Android交互的模块,具体就是H5主要提供页面,android用webView显示出来,部分topBar和bottomBar用原生android写。

做了一个实验,页面用H5写,android负责解析和显示并进行一定的登录逻辑判断。

特别注意的是android需要用WebView这个类实例化一个对象,通过设置允许和javaScript交互并添加javaScript实例才可以进行混合开发。

[java] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. webView = (WebView) findViewById(R.id.webview);  
  2.     WebSettings ws = webView.getSettings(); // 获取WebView配置  
  3.     ws.setJavaScriptEnabled(true); // 启用JavaScript  

[java] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. webView.addJavascriptInterface(new JavaScriptInterface(), "android");  
  2.         webView.loadUrl("file:///sdcard/Local/webHome/h5test.html"); // 加载本地的H5页面  
  3.         webView.loadUrl("javascript:btnClick()");  
  4.         webView.loadUrl("javascript:btnOpenXinlangPage()");  
  5.         webView.loadUrl("javascript:btnC()");  
  6.         webView.loadUrl("javascript:btnNextPage()");  

并且定义一个JavaScriptInterface用于处理从H5返回的数据,每个接口之前都要加@JavaScriptInterface,不然android无法响应H5的页面元素。

[java] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. public class JavaScriptInterface {  
  2.         @JavascriptInterface  
  3.         public void toActivity(String usernameFromH5, String passwordFromH5) {  
  4.             // 此处应该定义常量对应,同时提供给web页面编写者  
  5.             DialogTest(usernameFromH5, passwordFromH5);  
  6.         }  
  7.   
  8.         @JavascriptInterface  
  9.         public void toAndroidToastC(String strFromH5) {  
  10.             ToastC(strFromH5);  
  11.         }  
  12.   
  13.         @JavascriptInterface  
  14.         public void toBActivity() {  
  15.             Intent intent = new Intent();  
  16.             intent.setClass(MainActivity.this, BActivity.class);// forward为当前activity,forwardTarget为新的activity  
  17.             startActivity(intent);  
  18.             System.out.println("解析H5页面参数失败...");  
  19.   
  20.         }  
  21.   
  22.     }  

这里是工程代码

http://download.csdn.net/detail/u014102727/9604085
0 0