• 混合app开发


    最近做项目,遇到H5和Android交互的模块,具体就是H5主要提供页面,android用webView显示出来,部分topBar和bottomBar用原生android写。

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

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

    1. webView = (WebView) findViewById(R.id.webview);  
    2.     WebSettings ws = webView.getSettings(); // 获取WebView配置  
    3.     ws.setJavaScriptEnabled(true); // 启用JavaScript  

    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的页面元素。

    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
  • 相关阅读:
    Java学习——文件和IO流
    Java多线程——ThreadLocal类的原理和使用
    Java多线程——线程八锁案例分析
    Django 模版语法 一
    Django 命令行调用模版渲染
    Django 使用 locals() 函数
    Django 加载 app 中的urls
    Django 传递额外参数及 URL别名
    Django 无名参数与有名参数
    Django 项目中添加静态文件夹
  • 原文地址:https://www.cnblogs.com/miaozhenzhong/p/5930990.html
Copyright © 2020-2023  润新知