Phonegap为跨设备的应用开发提供了一个解决方案。如果某个应用只有js和html,则可以通过Phonegap的在线build工具,编译出多个平台的app安装包。当然通过Phonegap提供的js可以访问部分设备的资源,如网络连接(Connection)、相机(Camera)、文件(File)、存储(Storage)等,具体可以参看Phonegap开发文档。但很多Android应用,仅仅使用这些资源是满足不了需求的,所以必然需要访问本地接口的方法。
初步实验,至少有两个方法可以访问本地的接口。
- 开发Phonegap Plugin。通过实现Phonegap提供的接口,然后在config.xml中注册插件,就可以通过js开访问了。具体可以参考Plugin Development Guide和Developing a Plugin on Android。
- 直接写Java类,通过DroidGap.appView.addJavascriptInterface暴露Java接口。按照这篇博客可以写出来。
对于第一种方法,虽然官方已经提供了教程,但我认为还是有必要梳理一下流程,因为官网的教程忽略了由于升级需要的更改。
- 实现CordovaPlugin 提供接口
package org.apache.cordova.plugin;
import org.apache.cordova.api.CordovaPlugin;
import org.apache.cordova.api.PluginResult;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/**
* This class echoes a string called from JavaScript.
*/
public class Echo extends CordovaPlugin {
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if (action.equals("echo")) {
String message = args.getString(0);
this.echo(message, callbackContext);
return true;
}
return false;
}
private void echo(String message, CallbackContext callbackContext) {
if (message != null && message.length() > 0) {
callbackContext.success(message);
} else {
callbackContext.error("Expected one non-empty string argument.");
}
}
}
- 修改config.xml
添加以下代码
<plugin name="Echo" value="org.apache.cordova.plugin.Echo" />
- 为windows(或者其他对象)添加echo方法
官网为cordova.exec(...),这里需要根据2.6的js接口使用作以下修改。
window.echo = function(str, callback) { var exec = cordova.require('cordova/exec'); exec(callback, function(err) { callback('Nothing to echo.'); }, "Echo", "echo", [str]); };
- 通过js调用接口
window.echo("echome", function(echoValue) {
alert(echoValue == "echome"); // should alert true.
});
另外,对于回调函数调用的线程有三种情况:
- 如果直接调用,即callbackContext.success(),则在WebCore 线程中执行,而是在UI线程。
- 如果希望在UI线程中直接,需要将回调函数封装在Runanble中,放在cordova.getActivity().runOnUiThread中执行。
cordova.getActivity().runOnUiThread(new Runnable() {
public void run() {
...
callbackContext.success(); // Thread-safe.
}
});
- 如果期望在单独的线程中执行(不至于阻塞WebCore线程),则使用 cordova.getThreadPool().execute方法。
cordova.getThreadPool().execute(new Runnable() {
public void run() {
...
callbackContext.success(); // Thread-safe.
}
});
相关推荐
在PhoneGap中,通过JavaScript调用本地设备功能是通过Cordova插件系统来实现的,这对于创建混合应用非常有用,因为它们可以利用Web技术同时访问手机的硬件特性。 标题"phonegap js调用本地java"指的是使用PhoneGap...
1. 插件结构:PhoneGap插件由两部分组成——JavaScript接口和原生代码(Java、Objective-C或Swift)。JavaScript部分负责暴露API给JavaScript代码,原生代码则实现与设备硬件或系统的交互。 2. 创建插件:使用...
PhoneGap是一种跨平台的移动应用开发框架,它允许开发者使用HTML、CSS和JavaScript来构建原生的移动应用程序。PhoneGap的核心是Apache Cordova,它是一个开源项目,为开发者提供了与设备硬件交互的能力,如访问...
PhoneGap和jQuery Mobile是两种非常重要的移动应用开发技术,它们结合使用可以构建跨平台的混合应用程序。PhoneGap是由Adobe开发的一个开源框架,它允许开发者使用HTML、CSS和JavaScript来创建原生的移动应用,而...
PhoneGap 支持两种主要的本地存储方式:Web Storage(包括 localStorage 和 sessionStorage)以及 Web SQL 数据库。 1. Web Storage (localStorage): `localStorage` 是一种持久化的存储机制,数据会在浏览器关闭...
5. **PhoneGap API使用**:在项目中,我们可以看到JavaScript代码如何调用PhoneGap的API,例如获取设备信息、访问本地文件系统、调用设备相机等。这些API使Web应用能够充分利用移动设备的功能。 6. **firstscreen...
PhoneGap是一种流行的开源框架,它允许开发者使用HTML、CSS和JavaScript来构建原生移动应用程序。PhoneGap的核心理念是通过Web技术实现跨平台的移动应用开发,同时能够访问设备的硬件功能,如摄像头、GPS、存储等。...
PhoneGap的核心是Apache Cordova,它提供了API接口,使得Web应用能够访问设备的功能,如摄像头、GPS、联系人列表等。通过PhoneGap,开发者可以编写一次代码,然后将其打包为多个平台的应用,如iOS、Android、Windows...
PhoneGap是一个开源的移动应用开发框架,它允许开发者使用HTML、CSS和...通过这个完整的工具链和环境,开发者可以更深入地利用PhoneGap框架的所有功能,包括深入访问移动设备的硬件接口和各种移动平台的特定API。
这个特定的“android PhoneGap 自定义插件”是关于在Android平台上扩展PhoneGap功能的一个实例,通过编写自定义插件,开发者可以调用Android的本地API,实现更丰富的功能,比如访问硬件设备、系统服务等。...
PhoneGap通过一个WebView组件将Web技术与设备的API接口结合,使得开发者能够访问设备的各种功能,如相机、联系人、文件系统等。为了下载文件,我们需要引入`cordova-plugin-file`插件,这个插件提供了对本地文件系统...
它的核心思想是将Web应用打包为一个原生的移动应用,通过WebView组件显示Web内容,并提供一套API接口,使得JavaScript可以调用设备的原生功能,如摄像头、GPS、存储等。这使得开发者可以用熟悉的Web技术快速开发跨...
在"appSample"中,JavaScript代码可能会调用PhoneGap提供的API,例如获取设备信息、监听用户触摸事件或访问本地存储。 在"appSample-master"这个压缩包中,除了HTML、CSS和JavaScript文件,可能还包括配置文件如...
这些插件允许JavaScript调用设备的原生功能,比如访问本地文件系统、获取设备信息等。因此,开发者需要熟悉Java语言,理解Android的Activity和Service概念,以及如何使用Android的Intent系统。 6. **PhoneGap插件...
- **本地 API 访问**:通过 JavaScript 接口调用设备的原生功能,如摄像头、GPS、加速度计等。 - **Web 视图封装**:在设备的原生壳体内嵌入一个浏览器引擎,展示 HTML5 应用。 - **应用商店发布**:生成的原生...
此外,它在iOS和Android两大主流平台上都具有良好的兼容性,这确保了无论用户使用何种操作系统,都能享受到一致的扫描体验。 在实际应用中,开发者可以通过简单的API调用来集成这个插件。通常,这包括初始化插件、...
综上所述,“认我测”在线认证检测系统,率先填补了认证检测领域移动端的空缺,提供了Web浏览器+移动端的双端访问模式,给用户提供了多种访问途径,真正实现了用户和检测机构的随时随地在线下单检测。 关键词:...
PhoneGap和Cordova是同一个项目的两个品牌名称,它们提供了一种使用Web技术(如HTML、CSS和JavaScript)来创建原生移动应用程序的平台。 【描述】:“待办事项列表应用 在cordova/phonegap中构建待办事项列表应用...
PhoneGap和Cordova是两个紧密相关的开源框架,用于构建跨平台的原生移动应用程序。它们允许开发者使用HTML、CSS和JavaScript等Web技术来开发应用,同时能够访问设备的功能,如摄像头、GPS和 accelerometer。 【描述...