phonegap和android sdk之间怎么连接

 我来答
明槐宸739
2016-05-04 · TA获得超过1045个赞
知道大有可为答主
回答量:1507
采纳率:92%
帮助的人:478万
展开全部
Java 端介绍
  Java 端作为后台调用 Android 本地 SDK 的接口,主要实现了如下的功能:
  建立通讯机制,提供接口给浏览器端,方便 JavaScript 进行调用。
  数据队列的维护,以保证浏览器端的调用后产生的数据可以回送。
  插件体系的建立,提供整个框架的可扩展性。
  而这三部分的功能对应到代码中则是如下的几个重要的 Java 类:
  DroidGap、CallbackServer
  CallbackServer
  Plugin、PluginManager
  因此我们需要依次来了解这几个重要的 Java 类的具体实现,这样才可以对 PhoneGap 在 Android 上的体系有一个很好的了解。
  DroidGap 的实现
  当 我们完成一个基本的 PhoneGap 的示例后,我们就会发现,在使用 PhoneGap 进行开发的手机应用中,第一步就是将继承关系 extends Activity 修改为 extends DroidGap。因此,DroidGap 是整个应用开始的地点,首先需要了解 DroidGap 的内容。
  在源码中可以看到 DroidGap 继承自 PhonegapActivity,而 PhonegapActivity 是一个抽象类,继承自 Activity,但是具体的实现都是集中在 DroidGap 类中。
  因 此,我们继续回到 DroidGap 类中,当我们知道 DroidGap 类也是一个 Acitvity 后,就会明白,DroidGap 在 onCreate 方法中实现了整个类最初的一些操作,代码的实现则集中在 onCreate() 和 init() 这两个方法中,具体的流程如下:
  设置 WebView
  设 置 WebView 的代码都集中在 init() 方法中,其中一个值得注意的工作是设置 WebChromClient。代码中提供了一个继承自 WebChromClient 的类,重写了其中的 onJsAlert,onJsConfirm,onJsPrompt 等方法。而在 onJsPrompt() 方法中,实现了 PhoneGap 中 Java 端和浏览器端通讯的关键一步。因此,值得我们专门的关注其代码,具体的功能实现代码如下,我们已经过滤了一些错误处理、安全验证等等可能会妨碍我们对重要 的功能实现理解的代码:
  代码清单 1. WebView 代码
  if (reqOk && defaultValue != null && defaultValue.length() > 3
  && defaultValue.substring(0, 4).equals("gap:")) {
  JSONArray array;
  try {
  array = new JSONArray(defaultValue.substring(4));
  String service = array.getString(0);
  String action = array.getString(1);
  String callbackId = array.getString(2);
  boolean async = array.getBoolean(3);
  String r = pluginManager.exec(service, action, callbackId, message, async);
  result.confirm(r);
  } catch (JSONException e) {
  e.printStackTrace();
  }
  }
  // Polling for JavaScript messages
  else if ......
  在此,我们就可以明白,实现 JavaScript 与 Java 端通讯的原理是 JavaScript 利用 prompt 来传递调用信息的数据,在 onJsPrompt 中,重写的方法截获了这些数据,在完成了对数据格式等等分析后,按照要求进行具体的调用。而具体的调用利用是的 PluginManager 类,这将在随后说明。
  绑定 js
  在 完成 WebView 的设置后,再将 PhoneGap 和 js 绑定,实现 js 与 PhoneGap 的通讯。在这一步中主要的内容就是实例化了 CallbackServer 和 PluginManager 两个类。因此,更多的内容会在随后对这两个类的介绍中再说明。
  载入 URL
  LoadUrl 方法也是实现一个 PhoneGap 示例后很熟悉的方法,在 loadUrl 中,完成基本的字符串处理后,主要利用 runOnUiThread 开始处理,其中第一步检测是否需要提供载入的显示,之后使用 WebView 的 loadUrl 载入内容,并且设置超时时间。
  至此,Java 端的准备工作也就完成,实现了 UI 的载入。可以看到,在 DroidGap 类中最重要的一个部分就是截获 JavaScript 的 prompt 数据。这是实现浏览器端和 Java 端通讯的基础。
  Plugin 的实现
  Plugin 是一个抽象类,实现了 IPlugin 接口,PhoneGap 中利用 Android SDK 实现逻辑代码的途径就是通过继承 Plugin 来实现。应此 Plugin 本身非常简单,最主要的部分是提供一个 execute 方法,如下:
  public abstract PluginResult execute(String action, JSONArray args, String callbackId);
  Plugin 的实现中的重要逻辑在其中来实现,它返回的是一个 PluginResult 对象,这个对象主要负责传递数据信息,包括的成员主要如下:
  private final int status;
  用于返回状态,status 与一个 enum 类型相关,用于标注插件的执行结果如何。
  private final String message;
  用于返回数据信息。
  PluginManager 的实现
  PluginManager 事实上是 DroidGap 类和具体的继承自 Plugin 的插件的联系纽带,由它来寻找和载入插件,并且调用。
  首 先,PluginManager 在构造函数中,调用了 loadPlugins 方法,该方法负责解析 xml 配置文件,对应每个 plugin,调用一次 addService 用于注册插件,具体的注册地点,是通过维护一个 HashMap<String, String> 来实现,分别保存 serviceType, className。在成员中,有另外一个 HashMap<String, IPlugin> 用于实现 className 和 IPlugin 类的绑定。这样就实现了 serviceType 和 IPlugin 的对应。
  在 PluginManager 中,执行插件的方法 exec 是主要功能,我们将会详细说明一下这个方法的过程:
  利用查询之前提到的 HashMap<String, String> 将 service 和 className 对应起来,这样我们就获得了提供功能的插件类的位置。
  通过 getClassByName 来获得插件类。
  完成类型检测,确定对应的类是一个插件类。
  执行 addPlugin 方法,其中则将第 2 步中获得插件类的 className 和具体的 Plugin 接口的实现绑定,具体的实现就是上文中提到的 HashMap<Strig,IPlugin>。
  判断 Plugin 是否需要异步执行,再根据情况,选择直接执行或者是建立新的线程来执行。
  完成执行后,得到的数据会根据情况交给 CallbackServer 来处理,PluginManager 会调用 DroidGap 中的 sendJavaScript 来将数据交给 CallbackServer,事实上,DroidGap 中的 sendJavaScript 不过是对 CallbackServer 中的 sendJavaScript 包装,实际调用的是 CallbackServer 中的 sendJavaScript 方法,这涉及到了 CallbackServer 类,随后就会说明。
  执行结果的转换则是利用 PluginResult 中的一些 to***String 方法。这些方法返回了一个 String 类型,其中包括了具体的 JSON 对象和 callbackId,具体的形式则是一个 js 代码,用于前端的调用。
  CallbackServer 的实现
  CallbackServer 实现了 Runnable 接口,具体的功能就是维护一个数据的队列,并且建立一个服务器,用于 XHR 的数据传递,对数据的队列的维护利用的是 LinkedList<String>。
  由于实现的是 Runnable 接口,在 CallbackServer 中,最主要的方法就是 run() 方法,run() 方法的具体内容简介如下:
  首先利用 ServerSocket 监听端口,具体端口则自由分配。
  在 accept 后则是对 HTTP 协议的解析,和对应的返回 status code。
  在验证正确后,利用 getJavascript 方法得到维护的 LinkedList<String>() 中的保存的 js 代码,如果为空则返回 null。
  这些具体的 string 类型的 js 代码则利用 socket 作为 response 返回给前端。
  之后就是对队列维护的方法,这时理解之前的 sendJavaScript 则很简单,该方法与 getJavaScript 相反,一个是从 LinkedList 中取出 js 代码,一个则是加入。
  综 上,CallbackServer 实现的是两个功能,一个是 XHR 的 SocketServer,一个是对队列的维护。而完成 CallbackServer 类的说明后,Java 端的主要功能也都说明完毕。随后会说明浏览器端的说明,在完成浏览器端说明后,我们就会明白整个 PhoneGap 框架运行的原理。
Storm代理
2023-07-25 广告
StormProxies是一家可靠的代理服务提供商,提供原生IP(住宅原生IP)和高匿名代理服务。以下是关于StormProxies的原生IP服务的一些信息:1. 住宅原生IP:StormProxies提供的住宅原生IP是指从真实的家庭或企... 点击进入详情页
本回答由Storm代理提供
游戏大百科3s
2016-05-04 · TA获得超过682个赞
知道小有建树答主
回答量:298
采纳率:25%
帮助的人:199万
展开全部
安装 Eclipse
在 Android 上建立 PhoneGap 应用程序开发环境的首要步骤是下载并安装 Eclipse IDE。
使用 PhoneGap 进行 Android 开发(可在 Windows、OS X 或 Linux 中完成。目前有许多不同的 Eclipse 安装包。虽然 PhoneGap 能够与其他程序包配置一同使用,但建议采用 Eclipse Classic 程序包,该程序包中已经包含 PhoneGap 应用程序开发入门及使用所需的各种工具。
访问 Eclipse 下载页面,针对您的操作系统下载 Eclipse Classic 程序包。Eclipse 下载将是一个包含开发环境的存档文件。
将该存档文件提取到您的本地硬盘,并记住其所在位置。
提取完成后,只需双击 Eclipse 应用程序即可启动 Eclipse,无需执行任何其他安装步骤。
安装 Android 工具
下载并安装 Eclipse 后,您需要配置自身环境以使用 Google Android 开发工具。此流程包含两个步骤。首先,下载并安装 Android SDK。然后,为 Eclipse 安装 ADT 插件。
下载并配置 Android SDK
在您的系统上配置 Android 工具的首要步骤是下载 Android SDK。
访问 Android SDK 网站 ,针对您的操作系统下载相应的版本。
将下载的存档文件提取到您的本地硬盘,并记住其所在位置。
为 Eclipse 配置 ADT 插件
接下来,您需要为 Eclipse 安装 ADT(Android 开发工具)插件。ADT 插件必须通过 Eclipse Install New Software 向导来进行安装。
启动 Eclipse。
按照 ADT 插件的下载说明(可在 Android 开发人员 SDK 页面 - Eclipse 获取)执行操作。这些步骤将指导您完成整个 ADT 插件的安装过程。
重新启动 Eclipse。
在安装完 ADT 插件并重新启动 Eclipse 后,您需要将它配置为使用已下载至本地文件系统的 Android SDK。
按照 开发人员 SDK 页面 – 配置 Eclipse 上的说明,在 ADT 插件中设置适当的 Android SDK 位置。
下载并安装 PhoneGap
下一步是下载并安装 PhoneGap。
访问 PhoneGap 下载页面,然后单击橙色的下载链接以开始下载过程。
将存档文件提取到本地文件系统以备随后使用。
您现已为在 Eclipse 内创建首个 Android PhoneGap 项目做好准备。
注意: 操作步骤针对 PhoneGap 1.5,但该流程须适用于所有版本的 PhoneGap,并且所有版本 PhoneGap 的操作均相同。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式