cordova开发日记04 常用插件与使用(更新2016-05-19)
为什么80%的码农都做不了架构师?>>>
常用插件推荐
1.cordova-plugin-camera 相机拍照
安装:
cordova plugin add cordova-plugin-camera
获取照片:
camera.getPicture(successCallback, errorCallback, options)
关于options的详细说明: http://cordova.apache.org/docs/en/latest/reference/cordova-plugin-camera/index.html#module_camera.CameraOptions
2.cordova-plugin-device 检查当前操作系统和设备情况
安装:
cordova plugin add cordova-plugin-device
属性:
device.cordova
device.model
device.platform
device.uuid
device.version
device.manufacturer
device.isVirtual
device.serial
3. cordova-plugin-file 文件
安装:
cordova plugin add cordova-plugin-file
创建一个永久的文件:
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fs) {console.log('file system open: ' + fs.name);fs.root.getFile("newPersistentFile.txt", { create: true, exclusive: false }, function (fileEntry) {console.log("fileEntry is file?" + fileEntry.isFile.toString());// fileEntry.name == 'someFile.txt'// fileEntry.fullPath == '/someFile.txt'writeFile(fileEntry, null);}, onErrorCreateFile);}, onErrorLoadFs);
创建一个临时文件:
window.requestFileSystem(window.TEMPORARY, 5 * 1024 * 1024, function (fs) {console.log('file system open: ' + fs.name);createFile(fs.root, "newTempFile.txt", false);}, onErrorLoadFs);function createFile(dirEntry, fileName, isAppend) {// Creates a new file or returns the file if it already exists.dirEntry.getFile(fileName, {create: true, exclusive: false}, function(fileEntry) {writeFile(fileEntry, null, isAppend);}, onErrorCreateFile);}
写文件:
function writeFile(fileEntry, dataObj) {// Create a FileWriter object for our FileEntry (log.txt).fileEntry.createWriter(function (fileWriter) {fileWriter.onwriteend = function() {console.log("Successful file read...");readFile(fileEntry);};fileWriter.onerror = function (e) {console.log("Failed file read: " + e.toString());};// If data object is not passed in,// create a new Blob instead.if (!dataObj) {dataObj = new Blob(['some file data'], { type: 'text/plain' });}fileWriter.write(dataObj);});
}
读文件:
function readFile(fileEntry) {fileEntry.file(function (file) {var reader = new FileReader();reader.onloadend = function() {console.log("Successful file read: " + this.result);displayFileData(fileEntry.fullPath + ": " + this.result);};reader.readAsText(file);}, onErrorReadFile);
}
更多使用方式: http://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/index.html#append-a-file-using-alternative-methods-
4.cordova-plugin-file-transfer 文件上传和下载
安装:
cordova plugin add cordova-plugin-file-transfer
例子:
// !! Assumes variable fileURL contains a valid URL to a text file on the device,
// for example, cdvfile://localhost/persistent/path/to/file.txtvar win = function (r) {console.log("Code = " + r.responseCode);console.log("Response = " + r.response);console.log("Sent = " + r.bytesSent);
}var fail = function (error) {alert("An error has occurred: Code = " + error.code);console.log("upload error source " + error.source);console.log("upload error target " + error.target);
}var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = fileURL.substr(fileURL.lastIndexOf('/') + 1);
options.mimeType = "text/plain";var params = {};
params.value1 = "test";
params.value2 = "param";options.params = params;var ft = new FileTransfer();
ft.upload(fileURL, encodeURI("http://some.server.com/upload.php"), win, fail, options);
自定义headers和onprocess:
function win(r) {console.log("Code = " + r.responseCode);console.log("Response = " + r.response);console.log("Sent = " + r.bytesSent);
}function fail(error) {alert("An error has occurred: Code = " + error.code);console.log("upload error source " + error.source);console.log("upload error target " + error.target);
}var uri = encodeURI("http://some.server.com/upload.php");var options = new FileUploadOptions();
options.fileKey="file";
options.fileName=fileURL.substr(fileURL.lastIndexOf('/')+1);
options.mimeType="text/plain";var headers={'headerParam':'headerValue'};options.headers = headers;var ft = new FileTransfer();
ft.onprogress = function(progressEvent) {if (progressEvent.lengthComputable) {loadingStatus.setPercentage(progressEvent.loaded / progressEvent.total);} else {loadingStatus.increment();}
};
ft.upload(fileURL, uri, win, fail, options);
下载文件:
// !! Assumes variable fileURL contains a valid URL to a path on the device,
// for example, cdvfile://localhost/persistent/path/to/downloads/var fileTransfer = new FileTransfer();
var uri = encodeURI("http://some.server.com/download.php");fileTransfer.download(uri,fileURL,function(entry) {console.log("download complete: " + entry.toURL());},function(error) {console.log("download error source " + error.source);console.log("download error target " + error.target);console.log("upload error code" + error.code);},false,{headers: {"Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA=="}}
);
终止传输:
// !! Assumes variable fileURL contains a valid URL to a text file on the device,
// for example, cdvfile://localhost/persistent/path/to/file.txtvar win = function(r) {console.log("Should not be called.");
}var fail = function(error) {// error.code == FileTransferError.ABORT_ERRalert("An error has occurred: Code = " + error.code);console.log("upload error source " + error.source);console.log("upload error target " + error.target);
}var options = new FileUploadOptions();
options.fileKey="file";
options.fileName="myphoto.jpg";
options.mimeType="image/jpeg";var ft = new FileTransfer();
ft.upload(fileURL, encodeURI("http://some.server.com/upload.php"), win, fail, options);
ft.abort();
更多使用方式: http://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file-transfer/index.html#installation
5.cordova-plugin-geolocation 获取经纬度
安装:
cordova plugin add cordova-plugin-geolocation
例子:
// onSuccess Callback// This method accepts a Position object, which contains the// current GPS coordinates//var onSuccess = function(position) {alert('Latitude: ' + position.coords.latitude + '\n' +'Longitude: ' + position.coords.longitude + '\n' +'Altitude: ' + position.coords.altitude + '\n' +'Accuracy: ' + position.coords.accuracy + '\n' +'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '\n' +'Heading: ' + position.coords.heading + '\n' +'Speed: ' + position.coords.speed + '\n' +'Timestamp: ' + position.timestamp + '\n');};// onError Callback receives a PositionError object//function onError(error) {alert('code: ' + error.code + '\n' +'message: ' + error.message + '\n');}navigator.geolocation.getCurrentPosition(onSuccess, onError);
6.cordova-plugin-inappbrowser 浏览器,用于打开文件
安装:
cordova plugin add cordova-plugin-inappbrowser
使用:
var ref = cordova.InAppBrowser.open(url, target, options);
ref是对目标window的引用
更多用法: http://cordova.apache.org/docs/en/latest/reference/cordova-plugin-inappbrowser/index.html#installation
7.cordova-plugin-splashscreen 显示App启动时的过渡页面
安装:
cordova plugin add cordova-plugin-splashscreen
资源目录结构:
projectRoothooksplatformspluginswwwcssimgjsresscreenandroidioswindows
配置文件:
<platform name="android"><!-- you can use any density that exists in the Android project --><splash src="res/screen/android/splash-land-hdpi.png" density="land-hdpi"/><splash src="res/screen/android/splash-land-ldpi.png" density="land-ldpi"/><splash src="res/screen/android/splash-land-mdpi.png" density="land-mdpi"/><splash src="res/screen/android/splash-land-xhdpi.png" density="land-xhdpi"/><splash src="res/screen/android/splash-port-hdpi.png" density="port-hdpi"/><splash src="res/screen/android/splash-port-ldpi.png" density="port-ldpi"/><splash src="res/screen/android/splash-port-mdpi.png" density="port-mdpi"/><splash src="res/screen/android/splash-port-xhdpi.png" density="port-xhdpi"/>
</platform><platform name="ios"><!-- images are determined by width and height. The following are supported --><splash src="res/screen/ios/Default~iphone.png" width="320" height="480"/><splash src="res/screen/ios/Default@2x~iphone.png" width="640" height="960"/><splash src="res/screen/ios/Default-Portrait~ipad.png" width="768" height="1024"/><splash src="res/screen/ios/Default-Portrait@2x~ipad.png" width="1536" height="2048"/><splash src="res/screen/ios/Default-Landscape~ipad.png" width="1024" height="768"/><splash src="res/screen/ios/Default-Landscape@2x~ipad.png" width="2048" height="1536"/><splash src="res/screen/ios/Default-568h@2x~iphone.png" width="640" height="1136"/><splash src="res/screen/ios/Default-667h.png" width="750" height="1334"/><splash src="res/screen/ios/Default-736h.png" width="1242" height="2208"/><splash src="res/screen/ios/Default-Landscape-736h.png" width="2208" height="1242"/>
</platform>
<preference name="SplashScreenDelay" value="10000" />
控制显示: 是否自动隐藏:
<preference name="AutoHideSplashScreen" value="true" />
延迟:
<preference name="SplashScreenDelay" value="3000" />
禁用:
<preference name="SplashScreenDelay" value="0"/>
<preference name="FadeSplashScreenDuration" value="0"/>
淡出:
<preference name="FadeSplashScreen" value="false"/>
淡出时间:
<preference name="FadeSplashScreenDuration" value="750"/>
手动操作:
navigator.splashscreen.show();
window.setTimeout(function () {navigator.splashscreen.hide();
}, splashDuration - fadeDuration);
圈圈
<preference name="ShowSplashScreenSpinner" value="false"/>
8.cordova-plugin-appversion 获取版本
cordova plugin add cordova-plugin-appversion
使用:
console.log(AppVersion.version); // e.g. "1.2.3"
console.log(AppVersion.build); // e.g. 1234
10.phonegap-plugin-barcodescanner 条码和二维码扫描
安装:
cordova plugin add phonegap-plugin-barcodescanner
使用:
cordova.plugins.barcodeScanner.scan(function (result) {// console.log("We got a barcode\n" +// "Result: " + result.text + "\n" +// "Format: " + result.format + "\n" +// "Cancelled: " + result.cancelled);let r_array = result.text.split(",");let obj = {};for(let i=0;i<r_array.length;i++){let o = r_array[i].split(":");obj[o[0]] = o[1];}// alert(JSON.stringify(obj));let param = {type:obj["类型"],id:obj["ID"]};sessionStorage.setItem("tunnel",JSON.stringify(obj));location.hash = "/qrcode_page";},function (error) {alert("Scanning failed: " + error);},{// "preferFrontCamera" : true, // iOS and Android"showFlipCameraButton" : true, // iOS and Android"prompt" : "Place a barcode inside the scan area", // supported on Android only"formats" : "QR_CODE,PDF_417", // default: all but PDF_417 and RSS_EXPANDED"orientation" : "landscape" // Android only (portrait|landscape), default unset so it rotates with the device}
);
11.com.sarriaroman.PhotoViewer 图片预览
安装:
cordova plugin add com-sarriaroman-photoviewer
使用:
PhotoViewer.show('http://my_site.com/my_image.jpg', 'Optional Title');
12.cordova-plugin-datepicker 日期选择
安装:
cordova plugin add cordova-plugin-datepicker
使用:
var options = {date: new Date(),mode: 'date'
};function onSuccess(date) {alert('Selected date: ' + date);
}function onError(error) { // Android onlyalert('Error: ' + error);
}datePicker.show(options, onSuccess, onError);
13.cordova-plugin-crosswalk-webview 第三方webview
安装:
cordova plugin add cordova-plugin-crosswalk-webview
cordova build android
输出路径:
/path/to/hello/platforms/android/build/outputs/apk/hello-x86-debug.apk
/path/to/hello/platforms/android/build/outputs/apk/hello-armv7-debug.apk
详细说明: https://www.npmjs.com/package/cordova-plugin-crosswalk-webview
14.cordova-plugin-fastrde-downloader 多文件下载器,可以解压zip
安装:
cordova plugin add https://github.com/fastrde/phonegap-downloader.git
使用:
//初始化
downloader.init({folder: "yourPersistantAppFolder", unzip: true});
//单文件下载
downloader.get("http://yourhost.de/some.zip");
//多文件下载
downloader.getMultipleFiles([{url:"http://yourhost.de/some1.zip"},{url:"http://yourhost.de/some2.zip"},{url:"http://yourhost.de/some3.zip"}
]);
//终止
downloader.abort();//事件
document.addEventListener(eventName, function(event){var data = event.data;
});
eventNames:
DOWNLOADER_initialized data:none
DOWNLOADER_gotFileSystem data:[cordova.fileSystem fileSystem]
DOWNLOADER_gotFolder data:[cordova.fileEntry folder]
DOWNLOADER_error data:[object error]
DOWNLOADER_noWifiConnection data:none
DOWNLOADER_downloadSuccess data:[cordova.fileEntry entry]
DOWNLOADER_downloadError data:[object error]
DOWNLOADER_downloadProgress data:[number percentage, string fileName]
DOWNLOADER_unzipSuccess data:[string fileName]
DOWNLOADER_unzipError data:[string fileName]
DOWNLOADER_unzipProgress data:[number percentage, string fileName]
DOWNLOADER_fileRemoved data:[cordova.fileEntry entry]
DOWNLOADER_fileRemoveError data:[cordova.fileEntry entry]
DOWNLOADER_getFileError data:[object error]
DOWNLOADER_fileCheckSuccess data:[string md5sum, string fileName]
DOWNLOADER_fileCheckFailed data:[string calculatedMd5sum, string md5, string fileName])
DOWNLOADER_fileCheckError data:[object error]
15.cordova-sqlite-storage
安装:
cordova plugin add cordova-sqlite-storage
打开数据库:
var db = window.sqlitePlugin.openDatabase({name: 'my.db', location: 'default'}, successcb, errorcb);
旧版的兼容若出问题请看详细说明:
https://www.npmjs.com/package/cordova-sqlite-storage
//INSERT
db.executeSql('INSERT INTO MyTable VALUES (?)', ['test-value'], function (resultSet) {console.log('resultSet.insertId: ' + resultSet.insertId);console.log('resultSet.rowsAffected: ' + resultSet.rowsAffected);
}, function(error) {console.log('SELECT error: ' + error.message);
});//SELECT
db.executeSql("SELECT LENGTH('tenletters') AS stringlength", [], function (resultSet) {console.log('got stringlength: ' + resultSet.rows.item(0).stringlength);
}, function(error) {console.log('SELECT error: ' + error.message);
});//batch
db.sqlBatch(['DROP TABLE IF EXISTS MyTable','CREATE TABLE MyTable (SampleColumn)',[ 'INSERT INTO MyTable VALUES (?)', ['test-value'] ],
], function() {db.executeSql('SELECT * FROM MyTable', [], function (resultSet) {console.log('Sample column value: ' + resultSet.rows.item(0).SampleColumn);});
}, function(error) {console.log('Populate table error: ' + error.message);
});
16.cordova-plugin-nativestorage
安装:
cordova plugin add cordova-plugin-nativestorage
使用:
NativeStorage.setItem("reference_to_value",<value>, <success-callback>, <error-callback>);
NativeStorage.getItem("reference_to_value",<success-callback>, <error-callback>);
转载于:https://my.oschina.net/wolfx/blog/676237
cordova开发日记04 常用插件与使用(更新2016-05-19)相关推荐
- Chrome(谷歌浏览器) 程序开发32个常用插件
Chrome(谷歌浏览器) 程序开发32个常用插件 谷歌浏览器(Chrome)在2008年底才发布,但很快它已成为火狐(Firefox)有力竞争对手.之前,因为有大量的附加组件的支持,所以火 狐(Fi ...
- 超详细手把手教你cordova开发使用指南+自定义插件,jsbridge
Cordova是什么 使用前端技术 开发跨平台web App的工具 底层原理:HTML+CSS搭建页面, JS和原生交互 交互原理:Cordova插件 环境配置 安卓开发基础环境搭建的文章可以参考一下 ...
- X64dbg-插件开发-字符编码-常用插件函数-回调结构
文章目录 1.字符编码 2.常用插件函数 2.1 _plugin_debugpause 2.2 _plugin_debugskipexceptions 2.3 _plugin_logprintf 2. ...
- sublime开发python需要安装哪些插件_Sublime text 3搭建Python开发环境及常用插件安装...
1. 按下Ctrl+Shift+P调出命令面板 2. 输入"package",在下拉列表找到"Package Control: list packages",选 ...
- 开发日记-20190422 关键词 插件化(1)概述
不知道什么时候,javaer这个名词已经成为了一个很通用的词汇,指代那些只知道使用新技术,在新技术出现之后静观其变,等其成熟之后,再用极短的时间学习其用法,然后宣布已经掌握这门新技术的程序员.所谓缺乏 ...
- android 常用开发插件,Android Studio 开发利器【常用插件】
1.ADB Idea ADB操作快捷菜单,快速清除数据,重启应用,卸载应用等 快捷键: Windows: Ctrl+Alt+Shift+A Mac OSX: Ctrl+Shift+A 当然,你可以在K ...
- VS CODE 微软旗下最好用的前端开发IDE编辑器+常用插件介绍
推荐给广大前端开发人员一款轻便好用的编辑器:VS CODE,微软出品完全免费,官网地址:https://code.visualstudio.com 安装完成后自动会显示中文,如果需要设置字体主题样式等 ...
- Vscode下载安装使用教程_Vscode搭建Python开发环境_Vscode常用插件
文章目录 1 下载 2 安装 3 搭建Python安装环境 4 推荐几款好用的插件 1 下载 官网 https://code.visualstudio.com/ 直接下载可能会很慢,所以我们用国内的镜 ...
- VS开发工具的常用插件
转 http://www.spersky.com/post/vsPlugins.html 我目前主要用的是Hide Main Page--公司配给的电脑屏幕分辨率好小,还是1366*768的,去掉头可 ...
最新文章
- 进化深度神经网络是推动技术发展的强劲动力
- High Performance之android高性能之路
- php怎么从文件中读取数据库连接,PHP连接 读取 写入mysql数据库的方法 附常用代码...
- Android——开源框架Universal-Image-Loader + Fragment使用+轮播广告
- SAP Cloud for Customer的Account Team里的role如何配置
- nssl1478-题【dp】
- linux刷命令脚本,linux – 如何调试bash脚本并获得每个命令的执行时间
- 【Python CheckiO 题解】All the Same
- linux内核启动过程4:内核运行时
- TensorFlow入门:TensorFlow工作原理
- rtt面向对象oopc——3.对官方IO设备模型框架图的补充绘图
- Windows 活动目录(AD)服务器系统升级到2012之最终域控服务器安装(五)
- java分配数组空间使用的关键字_创建数组时为数组元素分配内存空间的 Java 关键字是________(5.0分)_学小易找答案...
- opencv人脸检测报错,(-215:Assertion failed)cv::CascadeClassifier::detectMultiScale‘
- zxr10交换机配置手册vlan_中兴交换机配置命令
- 高德地图导航简单实例
- 掩码、子网掩码及子网划分
- pr制作节奏感抖动(变换)
- C语言:程序设计综合训练
- python人脸识别门禁系统_智能人脸识别门禁系统
热门文章
- python清除实例化类_在Python中,如何尝试(和排除)类的实例化?
- Oracle数据库exp和imp方式导数据
- linux内核关闭igmp,Linux kernel IGMP多个安全漏洞
- arm linux 蜂鸣器qt,Qt 程序中使用蜂鸣器 ioctl()
- MEMCACHED在集群环境下对并发更新是否保持数据一致
- 计算机英语讲课笔记06
- Spring Boot 案例:连接后台数据库实现用户登录
- 2017.3.4 wyd测试
- 【英语学习】【Level 07】U03 Amazing wonders L1 My hometown
- 【英语学习】【English L06】U03 House L3 How is your house hunt going?