一般来说,比较成熟的公司,android的native开发和webview中内嵌的web页面开发是分离的。Android可以使用webview来呈现web端的页面效果,在app设计的时候,适当情况下使用webView是一种轻耦合的页面展现。

             1.webView和javascript的交互:

             (1)web执行native代码,示例:

        private class MyJavaScript{       public void setText(String data) {        //TODO add your code here}}
        //将这个接口在webview中进行注册:MyJavaScript javaScript = new MyJavaScript();//此处的 "js" 为任意字符串,是在html中调用时引用webView.addJavascriptInterface(javaScript, "js");        //在html中定义js代码//关键是代码: javascript:window.jd.setText('sth')  "js" 为上述注册的 MyJavaScript 的引用名//这里将调用上述 java 代码中 MyJavaScript 中的 getText(String data) 方法,从而达到 web 向 native 主动传值的方法

              (2)native调用js改变web页面元素         

       //在 html 中定义用具接收 native 传值调用的 js       //在 native 中主动调用执行上述的 jswebView.loadUrl("javascript:setText('hello world')");
       2.webView拦截特殊url.

          可以根据不同的uri的schema做不同处理,例如识别出camera://,调用手机的相机功能进行拍照。示例如下:

               webView.setWebViewClient(new WebViewClient() {/** * 返回true阻止浏览器处理 */private boolean checkUrl(String url) {Uri uri = Uri.parse(url);String schema = uri.getScheme();if(schema.contains("camera"){  //TODO    return true;}return false;}@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {if (checkUrl(Uri.parse(url))) {return true;} else {return super.shouldOverrideUrlLoading(view, url);}}@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {if (checkUrl(Uri.parse(url))) {webView.stopLoading();return;} super.onPageStarted(view, url, favicon);}@Overridepublic void onPageFinished(WebView view, String url) {super.onPageFinished(view, url);}@Overridepublic void onReceivedError(WebView view, int errorCode, String description, final String failingUrl) {super.onReceivedError(view, errorCode, description, failingUrl);}});

 


              

更多相关文章

  1. 代码讲解Android Scroller、VelocityTracker
  2. 基于ffmpeg的Android播放器开源代码
  3. Android ActionBar的源代码分析(一)
  4. 通过JavaScript或PHP检测Android设备的代码
  5. Android Studio Intent 页面切换崩溃解决办法
  6. android 软件更新代码
  7. Ubuntu 下 Android源代码下载指南

随机推荐

  1. Cordova 3.x 源码分析(6) -- cordova.js本
  2. Android支持不同的密度或分辨率
  3. Android串口操作,简化android-serialport-
  4. android基础知识
  5. Android Tutorial(3)Android Menu Exampl
  6. 布局 遗忘 整理
  7. Android自带的图标集合
  8. Gradle sync failed: Could not GET 'htt
  9. Android:res之selector背景选择器
  10. android预定义样式简述