一、 什么是Ionic

Ionic 是一个强大的 HTML5 应用程序开发框架(HTML5 Hybrid Mobile App Framework )。 可以帮助您使用 Web 技术,比如 HTML、CSS 和 Javascript 构建接近原生体验的移动应用程序。它是基于Cordova框架,利用Cordova实现应用的手机功能调用、调试与发布。

简单的话就是可以使用一套代码,利用Ionic可以生成安卓、IOS和网页端应用。

二、 使用插件时遇到的坑与解决方法

在开发Ionic应用时,因为程序本身是不具备调用手机功能的,需要利用Cordova插件进行手机功能调用,而一些插件因为停止更新或更新不及时,导致对新版本系统的手机或不同厂商生产出来的手机的支持度都不一样,现在总结一下本人在开发Ionic时,在使用一些常用的插件遇到的坑和解决方法。

2.1. cordova-plugin-file-transfer插件

最新发行版本:1.7.1

说明:cordova-plugin-file-transfer是一个文件传输插件,可利用它进行文件的上传与下载。

问题:使用最新发行版本进行IOS打包发布时,Xcode会报userAgent错误。

解决:

使用GIT代码库里的最新代码进行发行,可解决些问题,具体操作:ionic cordova plugin add

https://github.com/apache/cordova-plugin-file-transfer

2.2. cordova-plugin-telerik-imagepicker插件

最新发行版本:2.3.6

说明:cordova-plugin-telerik-imagepicker是图片选择插件,可调用系统图库进行图片与视频的选择。

问题:最新版本与ANDROID_SUPPORT_V4_VERSION或ANDROID_SUPPORT_APPCOMPAT_V7_VERSION为27.+的插件会有冲突(如cordova-plugin-file-opener2和cordova-plugin-camera),造成选择图片时会造成应用闪退。

解决:

降级为2.3.3版本:ionic cordova plugin add cordova-plugin-telerik-imagepicker@2.3.3

开启AndroidX模式,在config.xml添加

有些机型还需要添加AndroidX适配器插件:ionic cordova plugin add cordova-plugin-androidx-adapter

2.3. cordova-plugin-filepath插件

最新发行版本:1.6.0

说明:ordova-plugin-filepath是一个文件路径转换插件,通常配合一些文件选择相关的插件使用。

问题:对Android API 29及以上和部分华为荣耀手机会有兼容问题。

解决:

无解,只能修改插件源码,以下为本人修改的插件代码,文件路径为:ode_modules/cordova-plugin-filepath/src/android/FilePath.java,

  //第345行开始// DownloadsProviderelse if (isDownloadsDocument(uri)) {// thanks to https://github.com/hiddentao/cordova-plugin-filepath/issues/34#issuecomment-430129959Cursor cursor = null;//by ming 这里有个BUG,如果取Download目录第三方应用目录里的文件,如果在Download目录下有相同文件名的文件,会获取到Download上录下的文件,解决此问题可屏蔽以下try里的代码,不过会产生临时文件try {cursor = context.getContentResolver().query(uri, new String[]{MediaStore.MediaColumns.DISPLAY_NAME}, null, null, null);if (cursor != null && cursor.moveToFirst()) {String fileName = cursor.getString(0);String path = Environment.getExternalStorageDirectory().toString() + "/Download/" + fileName;if (fileExists(path)) {return path;}}} finally {if (cursor != null)cursor.close();}//final String id = DocumentsContract.getDocumentId(uri);//by ming 华为和荣耀手机特殊处理if (id.startsWith("raw:")) {return id.replaceFirst("raw:", "");}//by ming endString[] contentUriPrefixesToTry = new String[]{"content://downloads/public_downloads","content://downloads/my_downloads","content://downloads/all_downloads" //add by ming};for (String contentUriPrefix : contentUriPrefixesToTry) {//Uri contentUri = ContentUris.withAppendedId(Uri.parse(contentUriPrefix), Long.valueOf(id)); //delete by mingtry {Uri contentUri = ContentUris.withAppendedId(Uri.parse(contentUriPrefix), Long.valueOf(id)); //add by mingString path = getDataColumn(context, contentUri, null, null);if (path != null) {return path;}} catch (Exception e) {}}try {return getDriveFilePath(uri, context);} catch (Exception e) {return uri.getPath();}}

三、 结语

以上就是本人在开发Ionic时所用到的一些插件遇到的问题和解决的方法,而这些插件在开发中还是挺常使用到的,希望本人的经验对大家有所帮助。

Ionic使用常用插件时遇到的坑与解决方法相关推荐

  1. 使用Docker时遇到的坑与解决方法

    使用Docker时遇到的坑与解决方法 1. Docker 服务启动串台 使用 docker-compose 命令各自启动两组服务,发现服务会串台! [问题起因] 在两个不同名称的目录目录下面,使用 d ...

  2. vue使用marked解析markdown文本遇到的坑及解决方法

    vue使用marked解析markdown文本遇到的坑及解决方法 1. 前言 最近在搭建自己的博客网站 https://lyuanzhi.com,不免遇到了要把markdown文本转化为html代码的 ...

  3. uniapp(小程序) 配置 海康威视-萤石监控(直播替代方案) 踩坑与解决方法

    uniapp(小程序) 配置 海康威视-萤石监控(直播替代方案) 踩坑与解决方法 因为公司业务需求需要获取监控的摄像头,萤石是给出了几种方案去实现. 直播接入:萤石开放平台API文档 小程序接入:萤石 ...

  4. php iconv 空格,PHP_PHP中iconv函数转码时截断字符问题的解决方法,iconv是转换编码的,但是在中 - phpStudy...

    PHP中iconv函数转码时截断字符问题的解决方法 iconv是转换编码的,但是在中文转码时候出现显示不全问题. iconv("UTF-8","GB2312//IGNOR ...

  5. vscode老编译之前的文件_vscode单击新文件时覆盖旧文件的解决方法

    vscode单击新文件时覆盖旧文件的解决方法 当一个项目很大的时候我们去找某一个文件经常使用搜索功能,本人经常使用快捷键ctrl+p进行某个文件的搜索,或者单机一个文件时会覆盖掉原来窗口中打开的文件, ...

  6. python打包exe 之打包sklearn模型中的各种坑及其解决方法。

    之前学习了如何打包,如何建立虚拟环境打包,以及如何带资源打包exe. python打包成exe 可执行文件 .教程 使用pipenv建立虚拟环境解决python打包exe文件过大的问题(附打包带图标, ...

  7. mysql脚本执行中文乱码_MySQL从命令行导入SQL脚本时出现中文乱码的解决方法

    本文实例讲述了MySQL从命令行导入SQL脚本时出现中文乱码的解决方法.分享给大家供大家参考,具体如下: 在图形界面管理工具 MySql Query Browser中打开脚本(脚本包括建库.建表.添加 ...

  8. mysql5.7.20 sql mode_MySQL5.7中的sql_mode默认值带来的坑及解决方法

    在正常项目开发过程中,如果MySQL版本从5.6升级到5.7版本.作为DBA在考虑数据库版本升级带来的影响时,一般会有几个注意点: sql_mode optimizer_switch 本文主要内容是M ...

  9. Mac安装软件时各种异常情况的解决方法

    Mac安装软件时各种异常情况的解决方法 提示程序含有恶意代码或者已经打开所有来源还是提示扔到垃圾桶 在终端输入 xattr -r -d com.apple.quarantine 加上程序的App绝对路 ...

最新文章

  1. LESSON 11.4 原理进阶:AdaBoost算法流程详解
  2. html复选框读取数据库,checkbox 读取数据库
  3. 2020-12-15 CPU设计复盘
  4. chrome全屏隐藏状态栏_PS技巧丨18个让你相见恨晚的PS隐藏技巧!
  5. android执行命令行取得结果,Android调用shell脚本并取得输出
  6. 告别大妈的灵魂拷问,Python 教你轻松完成垃圾分类!
  7. Apache+tomcat集群
  8. datagrip 查看 blob_AppStore今日限免 不解锁屏幕通知中心查看日历等3款软件标题文章...
  9. 使用Linux快速使用redis集群
  10. Spring源码之事务(二)
  11. linux磁盘挂载特别慢,arch开机速度竟然是挂载磁盘拖慢了。。
  12. 有关圣诞节表白的c语言程序,关于圣诞节表白唯美的句子
  13. 博士申请 | 南方科技大学NCC Lab刘泉影教授招收深度学习方向全奖博士生
  14. linux DDos病毒查杀过程记录
  15. 2021年度总结:天赐良机,曲线入行的大龄程序员?
  16. bugkuCTF---flag在index里
  17. python add picture显示过大_利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例...
  18. 软路由连接NAS做链路聚合
  19. 删除Linux系统中的大文件
  20. 外部 DTD: 无法读取外部 DTD ‘mybatis-generator-config_1_0.dtd‘, 因为 accessExternalDTD 属性设置的限制导致不允许

热门文章

  1. 数学建模方法(1)引言
  2. 计算机服务 访问拒绝,Win7开机提示group policy client服务未能登录,拒绝访问的解决方法...
  3. 使用MyBatis-Plus代码生成器(新)遇到的问题
  4. 海贼王燃烧意志服务器维修,航海王燃烧意志48服-新世界开服时间表_航海王燃烧意志新区开服预告_第一手游网手游开服表...
  5. 从股票市场选择配对的股票:理论联系实际
  6. 网络地址翻译 NAT
  7. MATLAB实例:阶跃函数的两种表达方式
  8. CRect::DeflateRect() 和OffsetRect()
  9. 江西小学计算机说课稿,《美丽的家乡》说课稿(江西省省级优课).docx
  10. 589. N 叉树的前序遍历、Leetcode的Go实现