# harmony-cordova **Repository Path**: bohid/harmony-cordova ## Basic Information - **Project Name**: harmony-cordova - **Description**: 鸿蒙版cordova的demo示例程序,主要功能是提供如何使用harmony-cordova开发项目,如何调用自带插件的API接口,如何编写自定义插件,您在使用harmon-cordova开发项目时,可以参考该此demo代码 - **Primary Language**: JavaScript - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 6 - **Created**: 2025-10-23 - **Last Updated**: 2025-10-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

harmony-cordova test

所有插件调用遵守(https://cordova.apache.org)官方插件接口规范
## 开发说明 该项目是使用harmony-cordova开发的鸿蒙demo程序,主要功能是提供如何使用harmony-cordova开发项目,如何调用自带插件的API接口,如何编写自定义插件,您在使用harmon-cordova开发项目时,可以参考该demo程序,使用相关插件,主要功能展示如下:
## harmony-cordova说明 Cordova,包含sdk和插件,并支持自定义插件研发,Cordova sdk采用C/C++研发,底层采用自研Socket TCP/IP通讯,SSL/TLS连接强制使用session复用技术和本地文件缓存,大大提高应用层https网络请求效率,另外cordova HarmonyOS遵守cordova(https://cordova.apache.org)官方标准,除了提供鸿蒙版cordova sdk外,也提供了大量的插件,并且仍在持续新增插件,同时支持自定义插件研发,所有插件遵守cordova官方接口规范,因此开发者可以参考cordova官方插件的开发文档开发鸿蒙版app。 ## 自带插件
插件ID 接口说明
cordova-plugin-device
名称:设备信息

文档地址:https://github.com/apache/cordova-plugin-device

所有接口遵守官方文档,uuid和serial读取是鸿蒙系统的ODID,鸿蒙只允许系统应用读取uuid和serial,普通应用无权读取,具体文档参考华为官方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-device-info-V5
cordova-plugin-whitelist
名称:网络访问白名单

文档地址:https://github.com/apache/cordova-plugin-whitelist

使用cordova HarmonyOS不存在跨域访问问题,任何域名都可以访问网络,因此为了安全性,需要配置网络访问白名单,使用方法保持和原接口一致外,做了一些修改如下:
  • (1)自动识别http和https,http是80端口,https是443端口,支持自定义端口,但无需在config.xml里面配置
  • (2)不支持目录配置,就是直接配置域名就可以了,域名支持二级域名通配符
  • (3)举例1:在config.xml里面添加< allow-intent href="*.magongshou.com" />支持maongshou.com的所有二级域名
  • (4)举例2:在config.xml里面添加< allow-intent href="*" /> 支持所有域名>
cordova-hot-code-push-plugin
名称:热更新插件

文档地址:https://github.com/nordnet/cordova-hot-code-push

热更新部分js和css文件,无需升级整个app,主要是解决紧急情况下的bug,升级app还是建议上架应用市场。调用方法如下:
  • (1)修改插件两处bug,在rawfile/plugins/cordova-hot-code-push-plugin/www/chcp.js文件
    第60行: var resultObj = JSON.parse(msg);
       改为:var resultObj = msg; 
    第83行:callback(resultObj.error, resultObj.data);
       改为:callback(resultObj.action, resultObj.error, resultObj.data);
                      
  • (2)js调用接口initPlugin初始化插件,插件自动调用,无需手动调用
  • (3)js调用接口chcp.fetchUpdate检查是否有更新,调用此函数可以传入新的升级url地址,如果有更新回调action返回chcp_updateIsReadyToInstall,没有更新返回chcp_nothingToUpdate
  • (4)js调用接口chcp.installUpdate立即启用更新,然后app会自动重启
  • (5)如果不调用步骤3,下次app重启也会自动启用更新
cordova-plugin-network-information
名称:网络管理

文档地址:https://github.com/apache/cordova-plugin-network-information

cordova网络管理,查看网络连接状态,wifi,4G和5G等连接类型,需申请网络权限,才可以正常使用,见声明权限部分
cordova-plugin-bd-geolocation
名称:百度地理位置定位

文档地址:https://github.com/laixiangran/cordova-plugin-bd-geolocation

百度地理位置定位,支持wgs84、gcj02和bd09ll坐标,需申请位置权限,才可以正常使用,见声明权限部分
cordova-plugin-geolocation
名称:cordova地理位置定位官方插件

文档地址:https://github.com/apache/cordova-plugin-geolocation

cordova官方地理位置定位插件,支持wgs84、gcj02和bd09ll坐标,需申请位置权限,才可以正常使用,见声明权限部分
cordova-plugin-inappbrowser
名称:内置浏览器

文档地址:https://github.com/apache/cordova-plugin-inappbrowser

cordova的app的内置浏览器,实现app加载服务器网页
cordova-sqlite-storage
名称:数据库插件

文档地址:https://github.com/storesafe/cordova-sqlite-storage

cordova官方数据库插件,缓存本地数据,支持sql语句
cordova-plugin-camera
名称:相机功能

文档地址:https://github.com/apache/cordova-plugin-camera

cordova相机功能,调用相机拍摄照片,无需权限申请
cordova-plugin-file
名称:本地文件管理

文档地址:https://github.com/apache/cordova-plugin-file

鸿蒙file插件的使用完全遵守cordova-plugin-file官方文档,请大家参考官方文档使用该插件,但是鸿蒙的目录结构和Android、Ios不同,鸿蒙App目录结构说明参考https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/app-sandbox-directory-V5,cordova file文件目录和鸿蒙目录对应关系如下表,和Anroid、Ios一样,app启动后cordova会自动初始化目录,目录是动态的生成的,有可能HarmonyOS升级会改变目录结构(鸿蒙官方文档明确说明禁止直接使用目录结构)。
cordova目录 鸿蒙目录
cordova.file.applicationDirectory /data/storage/el2
cordova.file.applicationStorageDirectory /data/storage/el2/base/files
cordova.file.dataDirectory /data/storage/el2/base/files
cordova.file.cacheDirectory /data/storage/el2/base/cache
cordova.file.externalApplicationStorageDirectory /data/storage/el2/base/files
cordova.file.externalDataDirectory /data/storage/el2/base/files
cordova.file.externalRootDirectory /data/storage/el2
cordova.file.tempDirectory /data/storage/el2/base/temp
cordova.file.syncedDataDirectory /data/storage/el2/base/files
cordova.file.documentsDirectory /data/storage/el2/base/files
cordova.file.sharedDirectory /data/storage/el2/base/files
LocalFileSystem.TEMPORARY /data/storage/el2/base/temp
LocalFileSystem.PERSISTENT /data/storage/el2/base/files

cdvfile和Android、Ios不同,说明如下:

(1)cdvfile文件路径的生成,举例如下:

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fs) {
    fs.root.getFile("newPersistent.png", { create: true, exclusive: false }, 
        function (fileEntry) {
        var path1 = "cdvfile://"+dirEntry.nativeURL;
        var path2 = "cdvfile://"+"localhost/"+dirEntry.name+dirEntry.nativeURL;
        //path1和path2都为cdvfile的文件路径,系统兼容两种路径格式
        //该路径属于动态路径,有可能随着HarmonyOS升级而改变。
    }, onErrorCreateFile);
}, onErrorLoadFs);
                  
cdvfile路径也可无需程序动态生成,App缓存的文件,可以直接使用静态路径,例如:
LocalFileSystem.PERSISTENT的cdvfile路径,如下:
cdvfile://localhost/persistent/newPersistent.png
LocalFileSystem.TEMPORARY的cdvfile路径,如下:
cdvfile://localhost/temporary/newPersistent.png
保持和Andriod、Ios一致,此路径是安全路径,不会随着harmonyOS的升级而改变

(2)cdvfile文件路径的使用

window.resolveLocalFileSystemURL("cdvfile://localhost/temporary/newPersistent.png", 
    function(fileEntry) {
    //获取fileEntry,然后读取文件内容,文件必须存在
});
            
webview中直接引用cdvfile文件
< img src="cdvfile://localhost/temporary/newPersistent.png"/>
            

(3)https(http)://localhost的使用

App缓存的文件,也可以直接使用http(s):使用,路径的生成为:直接将cdvfile路径的cdvfile改为http或https即可

window.resolveLocalFileSystemURL("https://localhost/temporary/newPersistent.png", 
    function(fileEntry) {
    //获取fileEntry,然后读取文件内容,文件必须存在
});
            
webview中直接通过https或http访问文件
< img src="https://localhost/temporary/newPersistent.png"/>
            

(4)鸿蒙路径、cdvfile和http(s)对应关系如下表。

目录名称 鸿蒙目录 访问路径
temporary /data/storage/el2/base/temp
cdvfile://localhost/temporary
http(s)://localhost/temporary
persistent /data/storage/el2/base/files
cdvfile://localhost/persistent
http(s)://localhost/persistent
content /data/storage/el2/base/files
cdvfile://localhost/content
http(s)://localhost/content
assets /data/storage/el2/base/files
cdvfile://localhost/assets
http(s)://localhost/assets
files /data/storage/el2/base/files
cdvfile://localhost/files
http(s)://localhost/files
files-external /data/storage/el2/base/files
cdvfile://localhost/files-external
http(s)://localhost/files-external
documents /data/storage/el2/base/files
cdvfile://localhost/documents
http(s)://localhost/documents
sdcard /data/storage/el2/base/files
cdvfile://localhost/sdcard
http(s)://localhost/sdcard
cache /data/storage/el2/base/cache
cdvfile://localhost/cache
http(s)://localhost/cache
cache-external /data/storage/el2/base/cache
cdvfile://localhost/cache-external
http(s)://localhost/cache-external
root /data/storage/el2/base/files
cdvfile://localhost/root
http(s)://localhost/root

说明:只要鸿蒙目录的相同,无论通过cdvfile还是http(s)访问,都是访问的同一个文件。

(5) 不支持通过file://访问文件,请使用cdvfile://或http(s)://协议访问

cordova-plugin-file-transfer
名称:网络文件传输

文档地址:https://github.com/apache/cordova-plugin-file-transfer

cordova上传和下载文件
上传文件使用文件的原生路径,如果是拍照或者选择的图片返回的路径,配合cordova-plugin-file插件使用,获取fileEntry,然后获取到原生路径再上传,上传下载当前仅支持https,不支持http
window.resolveLocalFileSystemURL(filePath, function(fileEntry){
//使用fileEntry.toUrl()或toNativeURL()获取原生路径再上传
});
cordova-plugin-dialogs
名称:dialog弹窗

文档地址:https://github.com/apache/cordova-plugin-dialogs

cordova接口,弹出鸿蒙系统弹窗
cordova-plugin-datepicker
名称:日期时间控件选择

文档地址:https://github.com/VitaliiBlagodir/cordova-plugin-datepicker

cordova接口,调用鸿蒙系统原生日期和时间选择窗口
phonegap-plugin-barcodescanner
名称:扫码

文档地址:https://github.com/phonegap/phonegap-plugin-barcodescanner

调用摄像头扫码,也可从相册选择图片扫码
cordova-plugin-mlkit-barcode-scanner
名称:扫码

文档地址:https://github.com/MobisysGmbH/cordova-plugin-mlkit-barcode-scanner

调用摄像头扫码,也可从相册选择图片扫码
cordova-plugin-statusbar
名称:状态栏设置

文档地址:https://github.com/apache/cordova-plugin-statusbar

设置和管理状态栏
cordova-plugin-media-capture
名称:录制视频和音频

文档地址:https://github.com/apache/cordova-plugin-media-capture

cordova调用摄像头拍摄视频,和阿里云oss插件或者网络传输插件相结合实现拍摄视频后上传服务器功能
aliyun.uploadvod
名称:阿里云OSS插件

暂无文档,需联系开发者
阿里云OSS插件,实现移动端直接上传文件到阿里云OSS
cordova-plugin-android-permissions
名称:权限申请插件

文档地址:https://github.com/NeoLSN/cordova-plugin-android-permissions

cordova授权插件,接口永远返回为拥有权限,主要为兼容android移植到harmony使用的,避免修改Android端的代码,harmong授权已下放到各个插件,无需单独编写代码
phonegap-bluetooth-plugin
名称:经典蓝牙插件

文档地址:https://github.com/tanelih/phonegap-bluetooth-plugin

cordova官方经典蓝牙插件,需申请蓝牙权限,才可以正常使用,见声明权限部分
cordova-plugin-ble-central
名称:低功耗蓝牙

文档地址:https://github.com/tanelih/phonegap-bluetooth-plugin

蓝牙4.0版本,蓝牙打印更稳定、安全;cordova支持多款低功耗插件,主要是方便android和ios项目移植,需申请蓝牙权限,才可以正常使用,见声明权限部分
cordova-plugin-bluetooth-serial
名称:低功耗蓝牙

文档地址:https://github.com/don/BluetoothSerial

蓝牙4.0版本,蓝牙打印更稳定、安全;cordova支持多款低功耗插件,主要是方便android和ios项目移植,需申请蓝牙权限,才可以正常使用,见声明权限部分
cordova-base64-to-gallery
名称:保存图片到相册

文档地址:https://github.com/goiarlabs/cordova-base64-to-gallery

cordova实现保存图片到相册
cordova-plugin-huawei-push
名称:华为推送

文档地址:https://github.com/waitaction/cordova-plugin-huawei-push

cordova鸿蒙推送
cordova-plugin-alipay-v2
名称:支付宝支付插件

文档地址:https://github.com/hhjjj1010/cordova-plugin-alipay-v2
依赖插件:https://ohpm.HarmonyOS.cn/#/cn/detail/@cashier_alipay%2Fcashiersdk

使用方法如下:
  • (1)打开Terminal终端,进入工程目录,执行 ohpm i @cashier_alipay/cashiersdk安装支付宝SDK
  • (2)打开entry/src/main/module.json5,增加如下配置:
    "querySchemes": [
        "alipays"
    ],
                   
  • (3)打开entry/build-profile.json5,增加如下配置:
    "buildOption": {
        "arkOptions": {
          "runtimeOnly": {
            "packages": [
              "@cashier_alipay/cashiersdk"
            ]
          }
        }
    }
                   
cordova-plugin-wechat
名称:微信插件

文档地址:https://github.com/xu-li/cordova-plugin-wechat
依赖插件:https://ohpm.HarmonyOS.cn/#/cn/detail/@tencent%2Fwechat_open_sdk

使用方法如下:
  • (1)打开Terminal终端,进入工程目录,执行 ohpm i @tencent/wechat_open_sdk安装微信OpenSDK
  • (2)打开entry/build-profile.json5,增加如下配置:
    "buildOption": {
        "arkOptions": {
          "runtimeOnly": {
            "packages": [
              "@tencent/wechat_open_sdk"
            ]
          }
        }
      }
                   
---