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.pswp.cn/news/918296.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/918296.shtml
英文地址,請注明出處:http://en.pswp.cn/news/918296.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

jupyter notebook如何打開其他盤目錄

問題描述Jupyter Notebook 相信是我們學習 Python 避不開的一個工具。當我們使用 pip install notebook 安裝 Notebook 之后&#xff0c;使用命令 jupyter notebook 啟動服務&#xff0c;啟動之后默認會在瀏覽器打開界面。我們會發現&#xff0c;這個界面默認在 C 盤下&#xf…

C語言深度剖析

一、關鍵字 1.1 最快的關鍵字-register register 這個關鍵字請求編譯器盡可能將變量存在CPU內部寄存器中,而不是通過內存尋址以提高效率。 注意是:盡可能、而不是絕對 1.1.1 皇帝身邊的小太監-寄存器 不知道什么是寄存器,那見過太監沒有其實寄存器就是相當于。一個cpu的…

電腦使用“碎片整理”程序的作用

1.解決文件碎片化問題碎片整理的作用&#xff1a;將這些分散的文件片段重新整理、拼接&#xff0c;使其連續存儲在硬盤的某個區域&#xff0c;減少文件的 “碎片化” 程度。2. 提升硬盤讀寫速度機械硬盤的特殊性&#xff1a;機械硬盤依賴磁頭的物理移動來讀取數據&#xff0c;若…

AI 軟件工程開發 AI 算法 架構與業務

AI 軟件工程開發 & AI 算法 & 架構與業務前言1.AI 軟件工程開發1.1. AI Developer Studio &#xff08;playground級&#xff09;1.2. Agent & RAG1.3. LangChain & LangGraph1.4. MCP, Model Context Protocol1.5. Ollama1.6. Coze & Dify2.AI 算法2.1. G…

uniapp實現的圓形滾盤組件模板

采用 uniapp 實現的一款圓形滾盤示例組件模板, 支持 vue2、vue3&#xff0c;適配H5、微信小程序&#xff08;其他小程序未試過&#xff0c;可自行嘗試&#xff09; 代碼實現簡約易懂&#xff0c;用戶可根據自身需求下載模板&#xff0c;并進行擴展開發可到插件市場下載嘗試&…

無須炮解,打開即是Pro版

聊一聊 文檔或文件轉圖片&#xff0c;這個我有段時間沒有推薦了。 今天發現了一款非常好用的圖像格式轉換編輯軟件。 有需要的小伙伴請及時收藏&#xff0c;防止下次找不到。 軟件介紹 全能圖像格式轉換工具 這是一款全能的圖像轉換軟件&#xff0c;支持幾乎所有的圖像格式…

企業高性能web服務器——Nginx

Nginx介紹 Nginx是一個高性能的HTTP和反向代理服務器&#xff0c;也是一個郵件代理服務器。由俄羅斯的程序設計師Igor Sysoev所開發&#xff0c;官方測試nginx能夠支撐5萬并發鏈接&#xff0c;并且cpu、內存等資源消耗卻非常低&#xff0c;運行非常穩定。所以其特點是占有內存…

MCU控制ADAU1701,用System Workbench for STM32導入工程

作者的話 MCU控制ADAU1701&#xff0c;我有寫一個文檔詳細講步驟&#xff0c;里頭用到了System Workbench for STM32這個軟件&#xff0c;他是基于eclips內核的開發軟件&#xff0c;一般來講&#xff0c;設置好workspce工程就會出來&#xff0c;但是架不住就有設置好工程不出來…

SQL176 每個題目和每份試卷被作答的人數和次數

描述現有試卷作答記錄表exam_record&#xff08;uid用戶ID, exam_id試卷ID, start_time開始作答時間, submit_time交卷時間, score得分&#xff09;&#xff1a;iduidexam_idstart_timesubmit_timescore1100190012021-09-01 09:01:012021-09-01 09:41:01812100290022021-09-01 …

構建第三方軟件倉庫

1 下載第三方軟件到指定目錄[rootServer_b ~]# mkdir software [rootServer_b software]# wget https://dldir1v6.qq.com/qqfile/qq/QQNT/Linux/QQ_3.2.18_250724_x86_64_01.rpm2 安裝軟件信息采集工具[rootServer_b software]# yum install createrepo -y [rootServer_b softw…

Linux 管道命令及相關命令練習與 Shell 編程、Tomcat 安裝

2.實驗目的掌握 Linux 管道命令及相關命令&#xff08;cut、sort、wc、uniq、tee、tr、split&#xff09;的使用方法。學會使用 Shell 編程實現基本的計算器功能。掌握在 CentOS 7 系統中安裝 Tomcat 的方法。實驗內容1. Linux 管道命令及相關命令練習1.1 管道命令定義&#xf…

藍牙基礎:FIFO(First-In-First-Out)緩存區

在藍牙通信中&#xff0c;FIFO&#xff08;First-In-First-Out&#xff0c;先進先出&#xff09;緩存區是解決數據傳輸中“速度不匹配”和“時序異步”問題的核心機制&#xff0c;廣泛應用于藍牙芯片內部、協議棧各層級及主從設備交互中。其核心作用是臨時存儲數據&#xff0c;…

國內外主流源代碼平臺與高效開發指南

摘要 本文旨在為您提供一份實用的源代碼獲取與開發指南。我們將首先梳理國內外最主流的源代碼托管平臺&#xff0c;并重點介紹如何利用這些平臺上的開源項目。接著&#xff0c;本文將為您規劃一條針對初學者的“最快最性價比”的開發路徑&#xff0c;從環境配置、項目管理到實…

任務進度狀態同步 萬能版 參考 工廠+策略+觀察者設計模式 +鎖設計 springboot+redission

文章目錄概要效果解釋狀態流轉說明設計AI任務實體類AI任務狀態枚舉AI模型枚舉基礎實體類簡單字典接口工廠策略模式 接口設計AiJobProcessorAiJobProcessorFactory觀察者模式AI任務相關的EventMyEventListenerMyEventPubLisherRedissonConfig定時任務實現ReplicateJobProcessorR…

printf函數格式化輸出攻略

目錄 一、基本用法 二、占位符 基本用法 常用占位符 字符串占位符示例 多占位符示例 注意事項 三、占位符列表 基本數據類型占位符 浮點數占位符 特殊類型占位符 長度修飾符 使用示例 注意事項 四、輸出格式 1、限定寬度 基本用法 左對齊輸出 浮點數寬度限制…

AI小智單片機esps32-s3燒錄教程

1. 下載代碼到本地 代碼地址&#xff1a;https://github.com/78/xiaozhi-esp32 2. vscode安裝環境 安裝一下這個插件 3. esp32-s3通過數據線連接電腦 【圖片】 4. vscode選擇對應配置 如果是用自己的服務還得改下地址 5. 點擊構建 6. 點擊燒錄

socket編程中系統調用send()詳細講解

在 socket 編程中&#xff0c;send() 是用于在已連接的套接字上發送數據的系統調用&#xff0c;主要用于 TCP 協議&#xff08;也可用于 UDP&#xff0c;但需配合連接操作&#xff09;。它負責將用戶態的數據傳遞到內核緩沖區&#xff0c;再由內核協議棧&#xff08;如 TCP/IP&…

Eclipse JSP/Servlet:深入解析與最佳實踐

Eclipse JSP/Servlet:深入解析與最佳實踐 引言 Eclipse JSP/Servlet 是 Java 企業版(Java EE)的核心技術之一,它為 Web 開發者提供了一個強大的平臺來構建動態和交互式的 Web 應用程序。本文將深入探討 Eclipse JSP/Servlet 的概念、工作原理以及最佳實踐,幫助開發者更好…

CNB私有化部署Dify(零成本)教程

本篇文章介紹一下如何進行dify的私有化部署的過程&#xff1a;dify定位是開源的LLM應用平臺&#xff0c;搭建自己的這個AI應用&#xff0c;而我們非常熟悉的這個coze實際上是通過搭積木一樣搭建AI應用&#xff0c;我選擇從dify開始進行了解學習 1.前置準備 我們需要有這個騰訊云…

imx6ull-驅動開發篇16——信號量與互斥體

目錄 前言 信號量 概念與特性 信號量 API 函數 互斥體 概念與特性 互斥體 API 函數 前言 Linux 內核提供的幾種并發和競爭的處理方法&#xff0c;我們學習了&#xff1a; 驅動開發篇14——原子操作 驅動開發篇15——linux自旋鎖 本講我們就繼續學習&#xff1a;信號…