首页 > 其他分享 >uniapp发布到h5调用Android原生拍照,相册,uniapp如何显示并上传

uniapp发布到h5调用Android原生拍照,相册,uniapp如何显示并上传

时间:2024-03-22 13:58:51浏览次数:27  
标签:uniapp image h5 Android 图片 目录 加载

先说一下我这边的需求:

uniapp这边发布到h5,然后调用Android原生拍照,选择相册,最后将路径回调到uniapp,uniapp那边image要优先将图片回显出来,并将图片上传到服务器

遇到的问题:

1 调用原生拍照,选择相册回调到uniapp,uniapp的image控件无法展示Android那边回调回来的图片路径,但是如果使用原生image是可以加载出来的
2 原生回调回来的路径 uniapp那边 uni.uploadFile方法上传不成功

解决方案

第一个问题的解决方案:
我们都知道uniapp发布到h5,是如下操作:
HBuilderX打开你的uni-app项目 – > 点发行 - > 网站 - PC Web
在这里插入图片描述
然后将生成的h5文件,copy到Android 的assets目录下,原生那边Activity的webview加载本地h5文件(当然也可以将h5发布到服务器,原生加载url)

我这边将原生Android 拍照和选择图片后,进行压缩,将图片保存到Android私有目录下,然后获取到本地文件的路径,但是直接将这个路径传到uniapp,uniapp 的image是无法加载的,找了网上很多处理方法,无外乎都是 下面处理逻辑 比如:1 uniapp那边image显示的时候在路径前面加上 file://
2 图片路径进行md5,然后image加载,然后上传
这几个方法都试了,我这边image是无论如何都加载不出来
搞的我焦头烂额,认为此路不通的时候,
就和同事一起分析情况,同事提出一个观点,让我瞬间敞亮起来:
他说,由于uniapp那边image控件加载图片要么是在本地static目录要么是网络图片,既然 image是可以加载static目录下的本地文件 ,那就把 图片路径也保存到static目录下,和其他的图片在同一级目录,加载的时候image去加载!
我们都知道Android为了让开发者不随意操作assets目录,这个目录是禁止编辑和操作的,如果之前有这个文件,你可以往这个文件里面写入信息,如果没有,是不能添加文件的!
后来同事又提出一个解决方案,可以将assets目录在app加载的时候copy到私有存储空间,然后再把 拍照和选择图片压缩后的图片放到其他本地图片的同一级目录,试试。
后来按这个方案,果然image加载出来图片了。

方案如下:

public static void copyAssetsDir2Phone(Activity activity, String filePath){
   
        try {
   
            String[] fileList = activity.getAssets().

标签:uniapp,image,h5,Android,图片,目录,加载
From: https://blog.csdn.net/zuozhu_and_mingren/article/details/136934734

相关文章

  • uniapp编辑页修改数据后返回到列表页(上一页)或首页,列表页或首页数据不刷新问题
    uniapp编辑页(当前页)等修改数据后返回到列表页(上一页)或多次返回上一页到首页(非上一页),列表页或首页数据不刷新问题解决方法:一、返回到列表页(上一页)1、首先在编辑页的修改数据的成功回调中调用uni.$emit('refreshData');向上一页传递refreshData事件2、然后在列表页(上一......
  • Android View的动画效果,上移展示和下移隐藏
    原文:AndroidView的动画效果,上移展示和下移隐藏-Stars-One的杂货小窝项目里的一个小需求(实际是要和手势操作一起,上滑和下拉触发此动画效果),记录一下PS:本篇先记录下动画效果,下篇再将如何监听滑动手势效果原理实际通过View的translationY的属性来实现上移代码val......
  • Android 底层问题日志记录
    上电日志ddr异常(ddr内存-->内存是其它硬件与CPU进行沟通的桥梁)(220817_11:21:48.229)[dramc]DRAM_FATAL_ERR_FLAG=0x80000020(220817_11:21:48.229)[dramc]fataldramexceptionfound!resetsystem..(220817_11:22:25.531)Pllinitstart...PLL(PhaseLockedLoop......
  • CH57x,CH58x,CH59x芯片_SPI借助GPIO中断完成中断传输
    受其他项目的启发,如果IO充裕,且在SPI主机与SPI从机均可以自行编程的情况下,可以尝试在4线SPI的基础上增加两根GPIO线,通过IO中断的形式通知对方进行收数据;非SPI中断形式,以两颗CH582通讯为例,1、主机程序:voidmain(){SetSysClock(CLK_SOURCE_PLL_60MHz);GPIOA_ModeCfg......
  • Android11.0 SystemUI 下拉通知栏去掉左右滑动通知菜单功能
    1.前言在11.0的系统rom产品定制化开发中,在systemui模块中关于下拉状态栏这块也是非常重要的部分,最近在关于systemui下拉通知栏的每条通知部分要求去掉通知栏通知的长按事件,不需要长按功能,所以就需要分析下关于长按事件是在哪里注册的,然后去掉就可以了,接下来分析实现相关功能......
  • QT6 android下配置文件打包到APK
    一.遇到问题   用QT做android开发,生成的apk文件默认不包含程序配置文件和png文件,导致程序在android上无法读取必要的参数和logo,本文主要解决这个问题,并详细讲述QTandroid的apk程序打包流程。二.APK打包流程1.如何生成APK  当我们的工程的构建套件选择Android编译器......
  • 与Android Gradle Plugin对应的Gradle版本和Android Studio版本
    Gradle版本和AndroidGradlePlugin对应版本Gradle版本AndroidGradlePlugin版本8.4(Alpha版)8.6-rc-18.38.48.28.28.18.08.08.07.47.57.37.47.27.3.37.17.27.07.04.2.0+6.7.1AndroidStudio版本和AndroidGradlePlugin对应版本AndroidStudio版本AndroidGradlePlugi......
  • 870大神安卓Android电影院订票app设计-计算机毕业源码设计
    【友情提示】本店所有安卓Android项目都支持Eclipse和AndroidStudio编程工具,你们可以任意选择开发软件!开发环境:Myclipse(服务器端)+Eclipse(手机客户端)+mysql数据库 影院系统在电影院有着重要的地位,它不仅保存着电影院的基本信息,而且会储存大量的用户个人信息。影......
  • uniapp 蓝牙连接斑马打印机发送zpl指令打印
    历程需求是想通过斑马的zpl语言打印小票等,需要用到蓝牙连接。一开始采用的是uniapp自带的蓝牙连接和打印,用的是uni.writeBLECharacteristicValue(OBJECT)方法,蓝牙能正常连接和发送数据。奇怪的是发送蓝牙数据始终都是ok,打印机确是一点动静都没有。基于以上的疑惑,我开始怀疑是u......
  • uniapp怎么获取元素高度,获取元素节点信息,获取界面剩余高度
    一、在uniapp项目开发的过程中,常常需要获取元素的高度信息,来更容易的实现元素的布局控制,使用场景:列入动态的计算容器的高度,设置组件的最小高度等等在获取元素节点信息中,通常有两种情况:①获取单个②获取v-for循环元素的节点信息,话不多说,直接上代码注意:需要在onReady()之后获取,否则......