HarmonyOS WebView调起媒体选择器文件类型无法区分

​通过WebView onShowFileSelector获取到的acceptType非JS直接传递过来的acceptType,比如JS传递的为

image/*,但是onShowFileSelector获取到的acceptType为:【.tif,.xbm,.tiff,.pjp,.jfif,.bmp,.avif,.apng,.ico,.webp,.svg,.gif,.svgz,.jpg,.jpeg,.pjpeg,.png】

我用的photoAccessHelper.PhotoSelectOptions,里面的MIMEType只能设置大类,如photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE或photoAccessHelper.PhotoViewMIMETypes.VIDEO_TYPE

我们需要实现根据JS页面传入的acceptType来区分后调起媒体选择器的同时区分照片和视频,怎么区分呢?或者怎么直接获取JS的image/*,或者怎么判断?​

HarmonyOS
3天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

可以使用下面方法,PhotoViewMIMETypes 这边如果只区分VIDEO_TYPE 和 IMAGE_TYPE,可以设置Image/* 和 Video/的所有类型, 通过getAcceptType 返回的类型判断是否包含在Image/ 或 Video/* 内判断:如下:

import web_webview from '@ohos.web.webview'; 
import picker from '@ohos.file.picker'; 
@Entry 
@Component 
struct WebComponent { 
  controller: web_webview.WebviewController = new web_webview.WebviewController() 
  acceptType: string = '' 
 
  build() { 
    Column() { 
      Web({ src: $rawfile('local.html'), controller: this.controller }) 
        .javaScriptAccess(true) 
        .onShowFileSelector((event) => { 
          console.log('MyFileUploader onShowFileSelector invoked') 
          const regExpImage: Array<string> = ['.tif', '.xbm', '.tiff', '.pjp', '.jfif', '.bmp', '.avif', '.apng', '.ico', '.webp', '.svg', '.gif', '.svgz', '.jpg', '.jpeg', '.pjpeg', '.png'] 
          const regExpVideo: Array<string> = ['.ogm', '.ogv', '.mpg', '.mp4', '.mpeg', '.m4v', '.webm'] 
          let types: Array<string> | undefined = event?.fileSelector.getAcceptType() 
          const photoSelectOptions = new picker.PhotoSelectOptions(); 
          // 过滤选择媒体文件类型为 
          if (types && types.length > 0) { 
            if (regExpImage.some(item => types?.includes(item))) { 
              photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE; 
            } 
            if (regExpVideo.some(item => types?.includes(item))) { 
              photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.VIDEO_TYPE; 
            } 
          } 
          // ... 
          return false 
        }) 
    } 
 
  } 
}
分享
微博
QQ
微信
回复
3天前
相关问题
AVRecorder 支持的文件类型
1415浏览 • 1回复 待解决
HarmonyOS 地区选择器多级列表效果
105浏览 • 1回复 待解决
HarmonyOS 日期/日历/时间选择器开发
227浏览 • 1回复 待解决
HarmonyOS图片选择器相关的问题
327浏览 • 1回复 待解决
TimePicker如何设置时间选择器的范围?
6808浏览 • 1回复 待解决
鸿蒙可以实现状态选择器吗?
6029浏览 • 1回复 已解决
自定义日期滑动选择器弹窗
262浏览 • 1回复 待解决
HarmonyOS Record HashMap map类型选择
585浏览 • 2回复 待解决