本文主要介绍如何利用插件打开android的组件
首先需要编写一个DatePickerPlugin插件:
package com.example.plugin; import java.util.Calendar; import org.apache.cordova.api.CallbackContext; import org.apache.cordova.api.CordovaInterface; import org.apache.cordova.api.CordovaPlugin; import org.apache.cordova.api.PluginResult; import org.apache.cordova.api.PluginResult.Status; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.DatePickerDialog; import android.app.DatePickerDialog.OnDateSetListener; import android.util.Log; import android.widget.DatePicker; //注意需要继承CordovaPlugin public class DatePickerPlugin extends CordovaPlugin { private static final String ACTION_DATE = "date"; //js调用执行的“指令” //execute为CordovaPlugin需要实现的方法 public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) throws JSONException { if (action.equals(ACTION_DATE)) { String message = args.getString(0); datePicker(message,callbackContext );//Thread-safe. return true; } return false; } //日期组件的实现代码 public synchronized void datePicker(final String message, final CallbackContext callbackContext) { Log.d("TestPlugin echo message", message); final Calendar c = Calendar.getInstance(); final int mYear = c.get(Calendar.YEAR); final int mMonth = c.get(Calendar.MONTH); final int mDay = c.get(Calendar.DAY_OF_MONTH); final CordovaInterface cordova = this.cordova; //启动子线程打开DatePickerDialog Runnable runnable = new Runnable() { public void run() { DatePickerDialog dialog = new DatePickerDialog(cordova.getActivity(), new OnDateSetListener(){//日期设置后事件 @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // TODO Auto-generated method stub final JSONObject userChoice = new JSONObject(); try { userChoice.put("year", year); userChoice.put("month", monthOfYear+1); userChoice.put("day", dayOfMonth); } catch (final JSONException jsonEx) { Log.e("showDatePicker", "Got JSON Exception " + jsonEx.getMessage()); callbackContext.sendPluginResult(new PluginResult(Status.JSON_EXCEPTION)); callbackContext.error("Expectedone non-empty string argument."); } //时间设置后再响应页面 callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, userChoice)); callbackContext.success(message); } }, mYear, mMonth, mDay ); dialog.show(); }; }; // Activity类的runOnUiThread (Runnable action)函数, //这个函数的主要功能:在UI线程中运行指定的操作,如果当前线程是UI线程,然后采取行动立即执行; //如果当前线程不是UI线程,发送 消息到UI线程的事件队列。 this.cordova.getActivity().runOnUiThread(runnable); } }
然后配置DatePickerPlugin插件res/xml/config.xml
<plugin name="DatePickerPlugin" value="com.example.plugin.DatePickerPlugin"/>
接着利用js调用插件(datePickerPlugin.js)
//利用cordova.exec调用DatePickerPlugin插件
//DatePickerPlugin为config.xml配置的插件名称 //date为调用执行的“指令”
//str为传入值
window.datePickerPlugin = function(str,callback) {
cordova.exec(callback, pluginFailed, "DatePickerPlugin", "date", [ str ]);
};
//失败处理方法
var pluginFailed = function(message) {
alert("failed>>" + message);
}
//以下为cordova加载的操作
$(function() {
init();
});
var init = function() {
console.log("phonegap init!!");
document.addEventListener("deviceready", onDeviceReady, true);
}
var onDeviceReady = function() {
console.log("deviceready event fired");
//执行插件
window.datePickerPlugin("HELLO DATE!!!" , function(echoValue) {
console.log("datePickerPlugin echo>>" + echoValue.year+":"+echoValue.month+":"+echoValue.day);
});
};
最后html页面加载(此段相对简单)
<!DOCTYPE html> <html> <head> <title>Device Properties Example</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript" charset="utf-8" src="../js/jquery-1.8.3.js"></script> <script type="text/javascript" charset="utf-8" src="../js/cordova-2.3.0.js"></script> <script type="text/javascript" charset="UTF-8" src="../js/datePickerPlugin.js"></script> </head> <body> <p id="datePickerPlugin"></p> <a href="../index.html">返回</a> </body> </html>
相关推荐
cordova调用安卓原生activity插件 使用简介 JS端使用方式 //sendData表示要从js端发送到原生activity的数据,需用json对象传输 var sendData = { id:10001, name:"Simon", age:28 }; window.cordova.plugins....
本文件为cordova的一个插件,插件调用了一个Android的服务。服务是通过aidl方式调用的,并且服务被打包成一个jar文件
android集成cordova 并调用h5页面 有两个H5页面
cordova调用微信
cordova(phonegap)通过插件,通过js调用oc原生代码,demo
Cordova开发中,插件调用都只能调用本地的html,这个功能就是为了Cordova能调用远程的HTML页面,这样的话,一些逻辑可以放在服务器上,不需要全部打包放在app中,同时远程的html可以调用插件,调用方式同一般的...
调用原生摄像头扫一扫功能cordova插件
cordova插件,调用原生拨号功能,操作说明在readme文件内
这是一个Cordova插件,用于进入二维码扫描界面并返回扫描结果,可用于Cordova自定义插件的开发的学习,插件直接安装可以正常使用。
在存在iOS项目添加Cordova实现H5调用设备相册
实现JS调用后台JAVA,并返回提示信息。在cmd窗口进入解压根目录后,运行cordova run即可看到效果;还可以用android studio导入 platfroms下的android包,点击模拟器运行也可以看到效果。 刚开始导入会提示SDK路径...
这个cordova插件是我项目中用到的,其中引用到的库文件是.aar文件,不是通常的jar包,所以有些特别。针对这种特殊aar文件,插件添加完成后需要手动在app的gradle文件中添加以下代码repositories { flatDir { dirs ...
本实例是一个ionic完完整整的工程,并且调用一个自己开发的插件,与插件进行交互。其中插件的内容为调用一个android服务的功能。本例子主要用于我博客的附加源码
cordova自定义插件,实现toast,jar包的调用(利于对第三方jar包调用的理解),native与js的交互,实现android与js的信息回调。
使用 org.apache.cordova.sipkita BluetoothPrinter 插件的示例运行应用程序: 首先我们安装 grunt 和 bower 的依赖: npm install bower install我们为android添加平台: cordova platform add android安装插件: ...
> 此实例代码为 Android Studio 原生项目集成 Cordova 插件演示,而非通过 Cordova 直接编译,方便您在现有 Android Studio 项目中集成 Cordova 进行 H5 混合开发。 为了结构清晰及易维护性,项目分三个 Module ,...
cordova-screenshot cordova截屏插件 document.addEventListener("deviceready", init, false); function init() { document.querySelector("#share").addEventListener("touchend", function() { navigator....
cordova自定义插件,实现toast,jar包的调用(利于对第三方jar包调用的理解),native与js的交互,实现android与js的信息回调。
适用于Cordova的CameraPlus插件 支持平台: 的iOS 安卓 CameraPlus具有以下功能 在后台从Camera检索实时图像 在Base64中以HTML / JS检索图像,以便可以显示它们,将其保存在本地存储中并使用HTTP POST发送 设置...