译:Android WebViews

Android WebViews

  这一节展示在一个更大的Android应用程序里如何嵌入一个Cordova-enabled WebView 组件。 有关这些组件之间如果能沟通的详细说明,请看应用程序插件。

  如果你对Android不熟悉,那在你尝试更多嵌入一个WebView的不寻常开发选择之前,你首先就应该熟悉 Android 平台指南 和安装了的最新 Android软件开发工具包(Android SDK ) 。开始Cordova 1.9这个Android平台依赖一个 CordovaWebView 组件,它建立在一个遗留的 CordovaActivity 组件之上,这个组件刷新了1.9版本。

  1. 保证你有最新版的Cordova来遵循这些说明。从 cordova.apache.org下载并且解压他的Android包.
  2. 在控制台进入到这个Android包的/framework 目录并且运行 ant jar。它会创建Cordova的 .jar 文件,形成像这样的 /framework/cordova-3.3.0.jar.
  3. 复制这个 .jar文件到Android 项目的 /libs 目录.
  4. 添加下面内容到应用程序的 /res/xml/main.xml 文件,而且把 layout_heightlayout_width 和 id修改成适合这个应用程序的:
     
    <org.apache.cordova.CordovaWebView
         android:id="@+id/tutorialView"
         android:layout_width="match_parent"
         android:layout_height="match_parent" />
     
  5. 修改这个活动这样他就可以实现 CordovaInterface. 它应该实现这个借口包含的所有方法。你可能希望从/framework/src/org/apache/cordova/CordovaActivity.java复制他们,或者你自己来实现他们。下面代码片段展示了一个依赖这个借口的基本应用程序。注意引用的视图id如何匹配上面XML代码片段指定的 id 属性:
     
    public class CordovaViewTestActivity extends Activity implements CordovaInterface {
         CordovaWebView cwv;
         /* Called when the activity is first created. */
         @Override
         public void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.main);
             cwv = (CordovaWebView) findViewById(R.id.tutorialView);
             Config.init(this);
             cwv.loadUrl(Config.getStartUrl());
         }
     
  6. 如果这个应用程序需要使用camera,如下实现:
     @Override
     public void setActivityResultCallback(CordovaPlugin plugin) {
         this.activityResultCallback = plugin;
     }
     /**
      * Launch an activity for which you would like a result when it finished. When this activity exits,
      * your onActivityResult() method is called.
      *
      * @param command           The command object
      * @param intent            The intent to start
      * @param requestCode       The request code that is passed to callback to identify the activity
      */
     public void startActivityForResult(CordovaPlugin command, Intent intent, int requestCode) {
         this.activityResultCallback = command;
         this.activityResultKeepRunning = this.keepRunning;
    
         // If multitasking turned on, then disable it for activities that return results
         if (command != null) {
             this.keepRunning = false;
         }
    
         // Start activity
         super.startActivityForResult(intent, requestCode);
     }   
    
     @Override
     /**
      * Called when an activity you launched exits, giving you the requestCode you started it with,
      * the resultCode it returned, and any additional data from it.
      *
      * @param requestCode       The request code originally supplied to startActivityForResult(),
      *                          allowing you to identify who this result came from.
      * @param resultCode        The integer result code returned by the child activity through its setResult().
      * @param data              An Intent, which can return result data to the caller (various data can be attached to Intent "extras").
      */
     protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
         super.onActivityResult(requestCode, resultCode, intent);
         CordovaPlugin callback = this.activityResultCallback;
         if (callback != null) {
             callback.onActivityResult(requestCode, resultCode, intent);
         }
     }
     
  7. 最后,记得加入这个线程池,否则插件没有一个线程来运行:
     @Override
     public ExecutorService getThreadPool() {
         return threadPool;
     }
  8. 复制这个应用程序的HTML 和JavaScript 文件到Android 项目的 /assets/www 目录.
  9. 从 /framework/res/xml 复制这个config.xml 文件到项目的 /res/xml 目录.

有翻译不对或不准确的地方请留言

时间: 2024-11-09 23:32:48

译:Android WebViews的相关文章

译android framework层的资源文件

1.将资源放入 frameworks/base/core/res/res/ 中的相应目录,假设要添加的资源是 drawable 类型,文件名为 test(后缀可能为xml或者png等等),则将文件放入 frameworks/base/core/res/res/drawable*/ 下. 2.仿照已有的同类型系统资源修改 framework/base/core/res/res/values/public.xml,public.xml中有两种类型的资源描述,一种是<java-symbol/>系统私

[转][译][Android基础]Android Fragment之间的通信

2014-2-14 本篇文章翻译自Android官方的培训教程,我也是初学者,觉得官方的Training才是最好的学习材料,所以边学边翻译,有翻译不好的地方,请大家指正. 如果我们在开发过程中为了重用Fragment这个UI组件,那么我们应该把Fragment设计成是“自包含”.“模块化”组件,这种组件定义自己的布局和行为.一旦我们成功定义了这样的可重用的Fragment,我们就可以将他们与Activity进行关联,然后与整个Application进行整体的UI组装. 我们经常需要一个Fragm

[译]Android 中的定时任务调度

原文地址:Schedule tasks and jobs intelligently in Android 原文作者:Ankit Sinhal 译者:PhxNirvana 校对者:ilumer.wilsonandusa 在近期的应用开发中,异步执行任务是很流行的,而且这些任务经常在应用的生命周期之外运行,如下载数据或更新网络资源.有些情况下我们还需要做一些并不是马上需要执行的工作.Android 提供了一些 API 来帮助我们在应用中调度这些任务. 选择合适调度器可以提升应用的性能并且延长电池使

[译]Android view 测量布局和绘制的流程

原文链接 创造优秀的用户体验是我们开发者的主要目标之一.为此, 我们首先要了解系统是如何工作的, 这样我们才可以更好的与系统配合, 从它的优点中获益, 规避它的缺陷. 之前关于Android渲染过程的文章 这次我们主要关注Measure/Layout(测量和布局)的阶段, 这些阶段决定了视图的大小和位置, 以便于我们能够绘制它. Step 1: Measure 测量 目标: 确定是图的大小 视图的大小包含其子视图的大小, 且必须符合其父视图的要求 视图的大小由2个方面决定: 测量宽度与测量高度

译:Android Platform Guide(Android 平台指南)

Android 平台指南 这个指南展示了怎样搭建你的SDK开发环境部署Android设备的Cordova应用程序.将会带你走过整个程序包括安装Android SDK,在EclipseSDK打开一个Android项目,和部署到一个模拟器或真实设备上.你要跟着这个指南至少需要安装 Android SDK, 不管你下面要进行哪一个工作流. ( Web项目开发 和 本地平台开发 工作流都需要安装 Android SDK并且通过你的PATH可访问) 查看下列指定平台更详细的信息: Android Conf

Android4.4支持使用DevTools对原生Android应用程序WebViews内容进行调试

从Android4.4(KitKat)开始,可以使用DevTools对原生Android应用程序的Android WebViews内容进行调试. 调试WebViews要求: 1.在Android设备或模拟器运行Android4.4或更高版本,并且Android设备上启用USB调试模式. 2.Chrome 30或更高版本.更强大的WebView界面调试功能需要Chrome31或更高版本. 3.Android应用程序中的WebView配置为可调试模式. 配置WebViews为可调试: 在Chrome

赵雅智:android教学大纲

带下划线为具体内容链接地址,点击后可跳转,希望给大家尽一些微薄之力,目前还在整理中 教学章节 教学内容 学时安排 备注 1 Android快速入门 2 Android模拟器与常见命令 3 Android用户界面设计 4 Android网络通信及开源框架引用 5 线程与消息处理 6 数据存储及访问 7 Android基本单元应用activity 8 Android应用核心Intent 9 资源访问 10 ContentProvider实现数据共享 11 BroadcastReceiver 12 S

(4.6.23.1)Android之面向切面编程:AOP 与 Aspect简介

一OOP的困境 1 OOP 2 从打印日志来看AOP 和 OOP 二适用AOP的场景 三工具和库 四AspectJ简介 五AOP概念介绍 1 Join Points 何处支持注入 2 Pointcuts定位想要注入的具体连接点 21 Pointcuts基本结构 22 Joinpoint类型的直接选择 221 Joinpoint类型一览 222 定位正则 2221 Method Signature 2222 Constructor signature 2223 Field Signature 22

Android开发技巧一--weight属性实现视图的居中(半)显示

面试时,一位面试官问到:"如果我想讲按钮居中显示,并且占据其父视图宽度的一半,应该怎么做到呢?"即实现这种效果: 我们使用weightSum属性和layout_weight属性实现这一要求: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"