当前位置: 首页 > news >正文

uniapp/uniappx实现图片或视频文件选择时同步告知权限申请目的解决华为等应用市场上架审核问题

在UNIAPP支持vue和nvue,在UNIAPPX支持uvue,安卓支持在选择图片或视频文件权限申请的时候自动同步告知权限申请目的。轻松解决在华为应用市场审核,要求告知权限申请目的或说明的问题。

UNIAPP相册图片视频选择器(安卓可以自定义界面样式)功能介绍:
1.支持uniapp和uniappx,现在已经兼容了纯血鸿蒙和安卓后续将会兼容IOS
2.支持打开系统相册选择相片
3.支持多选和单选
4.支持设置多种语言(仅安卓)
5.支持自定义界面主题样式(仅安卓)
6.支持媒体文件类型选择 0: ALL(视频和图片) 1: IMAGE(图片) 2: VIDEO(视频) 3: AUDIO(音频)
7.支持媒体文件预览
8.支持设置开启和关闭原图功能
注意:集成完成后需要云打包或自定义基座才能生效,因为这是UTS原生SDK插件。

首先UNIAPP插件下载图片选择器:图片选择器插件(可以同步安卓权限申请说明 可自定义界面样式)安装到UNIAPP或你UNIAPPX项目里:


UNIAPP实现方法如下:

鸿蒙无需申请权限
安卓端首先AndroidManifest.xml里配置示例文件里所需的权限也可直接复制示列里的AndroidManifest.xml文件到项目根目录

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!-- 适配android 13 媒体文件选择权限--><uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /><uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /><uses-permission android:name="android.permission.READ_MEDIA_AUDIO" /><uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" /><uses-permission android:name="android.permission.CAMERA" /><application android:requestLegacyExternalStorage="true"><meta-data android:name="ScopedStorage" android:value="true" /></application>

uni-app项目中集成调用示例如下

1.接口引入

import { RHFselcet } from '@/uni_modules/fz-media-selcet';

2.vue或nvue文件内调用实现代码;

let parameter ={
        MediaType:2,//设置选择类型  0: ALL(全部) 1: IMAGE(图片) 2: VIDEO(视频) 3: AUDIO(音频) 不传默认为1图片
        Single:2,//设置单选或多选(鸿蒙无需传此参数), 1为单选,2为多选,不传默认为多选
        maxNum:6,//设置最大选中数,不传默认为9
        isOriginal:false, //是否开启原图功能,不传默认为false
        isDisplayCamera:true,//是否显示拍摄按钮,不传默认为true
    //语言设置(仅安卓), 0:简体中文,1:繁体,2:英语,3:韩语,4:德语,5:法语,6:日语,7:越语,8:西班牙语,9:葡萄牙语,10:阿拉伯语,11:俄语,12:捷克,13:哈萨克斯坦,不传默认为0
        Language:2,
        //主题界面样式设置(仅安卓),不传为默认样式
        theme:{
        titleBarStyle:{
        TitleBackgroundColor:'#8E07FD'
       },
      bottomNavBarStyle:{
          PreviewNormalTextColor:'#8E07FD',
          PreviewSelectTextColor:'#8E07FD',
          BarBackgroundColor:'#FFFFFF',
          EditorTextColor:'#8E07FD',
          OriginalTextColor:'#8E07FD',
        },
       selectMainStyle:{
           NumberStyle:true, //选中样式是否为数字,不传默认显示勾选样式
           isbtn:true, //完成按钮是否为显示背景,不传为默认不显示按钮背景
        //如需修改按钮颜色需要在res/values/colors.xml里修改btn_primary和btn_hover的颜色值和按下后的颜色值
           SelectTextColor:'#ffffff',//选择结果文字颜色
          // SelectText:'%1$d/%2$d 完成',
           SelectText:'使用(%1$d)',//选择结果要显示的文字,不传默认显示:已完成
           StatusBarColor:'#8E07FD',
           OriginalTextColor:'#8E07FD',
       }
        }
       }

 RHFselcet.getPicture( parameter, (data) => {
    let arrData = data.mediaArray
    let jsonData = JSON.stringify(arrData)
    console.log(jsonData)
    //回调结果:[{"mimeType":"video/mp4","num":1,"Pathurl":"/storage/emulated/0/DCIM/Camera/lv_0_20241025172529.mp4","height":1920,"fiename":"lv_0_20241025172529.mp4","path":"content://media/external/video/media/427606","Pathid":427606,"duration":16393,"size":20002573,"FolderName":"Camera","dateAddedTime":1729848339,"width":1080},{"mimeType":"video/mp4","num":2,"Pathurl":"/storage/emulated/0/DCIM/Camera/video_20241025_170438.mp4","height":1920,"fiename":"video_20241025_170438.mp4","path":"content://media/external/video/media/427604","Pathid":427604,"duration":16331,"size":35778914,"FolderName":"Camera","dateAddedTime":1729847078,"width":1080}]
})

3.集成后云打包或自定义基座调试既可看到效果

uni-appx实现方法如下

1.uvue页面接口引入如下代码

import { RHFselcet } from '@/uni_modules/fz-media-selcet';

2.在uvue页面里要调用的地方加入如下代码:

let parameter: UTSJSONObject ={MediaType:2,//设置选择类型  0: ALL(全部) 1: IMAGE(图片) 2: VIDEO(视频) 3: AUDIO(音频) 不传默认为1图片Single:2,//设置单选或多选(鸿蒙无需此参数), 1为单选,2为多选,不传默认为多选maxNum:6,//设置最大选中数,不传默认为9 仅多选时生效isOriginal:false, //是否开启原图功能,不传默认为falseisDisplayCamera:true,//是否显示拍摄按钮,不传默认为true
//语言设置(仅安卓), 0:简体中文,1:繁体,2:英语,3:韩语,4:德语,5:法语,6:日语,7:越语,8:西班牙语,9:葡萄牙语,10:阿拉伯语,11:俄语,12:捷克,13:哈萨克斯坦,不传默认为0Language:2,//主题界面样式设置(仅安卓),不传为默认样式theme:{titleBarStyle:{TitleBackgroundColor:'#8E07FD'},bottomNavBarStyle:{PreviewNormalTextColor:'#8E07FD',PreviewSelectTextColor:'#8E07FD',BarBackgroundColor:'#FFFFFF',EditorTextColor:'#8E07FD',OriginalTextColor:'#8E07FD',},selectMainStyle:{NumberStyle:true, //选中样式是否为数字,不传默认显示勾选样式isbtn:true, //完成按钮是否显示背景颜色//如需修改按钮颜色需要在res/values/colors.xml里修改btn_primary和btn_hover的颜色值和按下后的颜色值SelectTextColor:'#ffffff',//选择结果文字颜色// SelectText:'%1$d/%2$d 完成',SelectText:'使用(%1$d)',//选择结果要显示的文字,不传默认显示:已完成StatusBarColor:'#8E07FD',OriginalTextColor:'#8E07FD',}}}
//打开相册或视频RHFselcet.getPicture( parameter, (data) => {// console.log(data["mediaArray"])let arrData = data["mediaArray"]let jsonData = JSON.stringify(arrData)console.log(jsonData)
//回调结果:[{"mimeType":"video/mp4","num":1,"Pathurl":"/storage/emulated/0/DCIM/Camera/lv_0_20241025172529.mp4","height":1920,"fiename":"lv_0_20241025172529.mp4","path":"content://media/external/video/media/427606","Pathid":427606,"duration":16393,"size":20002573,"FolderName":"Camera","dateAddedTime":1729848339,"width":1080},{"mimeType":"video/mp4","num":2,"Pathurl":"/storage/emulated/0/DCIM/Camera/video_20241025_170438.mp4","height":1920,"fiename":"video_20241025_170438.mp4","path":"content://media/external/video/media/427604","Pathid":427604,"duration":16331,"size":35778914,"FolderName":"Camera","dateAddedTime":1729847078,"width":1080}]let DatalArray = JSON.parseArray(jsonData)console.log(DatalArray)
});
//打开系统相册或视频进行选择RHFselcet.getSysAlbum({//设置选择类型  0: ALL(全部) 1: IMAGE(图片) 2: VIDEO(视频) 3: AUDIO(音频) 不传默认为1图片MediaType:2,//设置选择模式  1为单选,2为多选,不传默认为2多选Single:1}, (data) => {console.log(data["mediaArray"])let ArrayData = data["mediaArray"]let resData = JSON.stringify(ArrayData)console.log(resData)
});

3.完成后云打包或制作自定义基座既可调试看效果。

http://www.dtcms.com/a/318789.html

相关文章:

  • TSMaster-C小程序使用
  • uni-app X能成为下一个Flutter吗?
  • Dify 从入门到精通(第 20/100 篇):Dify 的自动化测试与 CI/CD
  • MyBatis-Plus Service 接口:如何在 MyBatis-Plus 中实现业务逻辑层??
  • 阿里云部署若依后,浏览器能正常访问,但是apifox和小程序访问后报错链接被重置
  • [失败记录] 使用HBuilderX创建的uniapp vue3项目添加tailwindcss3的完整过程
  • [无需 Mac] 使用 GitHub Actions 构建 iOS 应用
  • vue3 el-select 加载内容后 触发事件
  • 「耘•学社」耘少年第五期学能突破导师制领袖特训营,圆满落幕
  • C++与SparkAI实战:高效应用案例
  • Android-Kotlin基础(Jetpack②-Data Binding)
  • 国产化Excel处理组件Spire.XLS教程:使用 C# 将 DataTable 导出为 Excel 文件
  • 嵌入式C语言编程:策略模式、状态模式和状态机的应用
  • 东莞立晟精密硅胶科技有限公司将携重磅产品亮相 AUTO TECH China 2025 广州国际汽车技术展
  • 计算机网络1-4:计算机网络的定义和分类
  • 汽车娱乐信息系统域控制器的网络安全开发方案
  • FPGA实战:用PL端串口发送Hello world
  • 【C/C++】C++引用和指针的对比
  • 29-数据仓库与Apache Hive-创建库、创建表
  • 树莓派安装OpenCV环境
  • 【CDA案例】数据分析案例拆解:解锁数据分析全流程!
  • 微服务、服务网格、Nacos架构与原理
  • mapbox进阶,mapbox-gl-draw绘图插件扩展,绘制新增、编辑模式支持点、线、面的捕捉
  • Linux系统编程--权限管理
  • 在NVIDIA Orin上用TensorRT对YOLO12进行多路加速并行推理时内存泄漏(下)
  • Redis为什么要引入多线程?
  • 如何在GPU上安装使用Docker
  • 【AI】——SpringAI通过Ollama本地部署的Deepseek模型实现一个对话机器人(二)
  • 用 tcpdump 捕获网络数据包
  • RTSP播放器技术详解:功能支持、平台覆盖与快速集成指南