HarmonyOS H5调用系统相机相册,无法拉起相机相册

H5代码:

<input id="card-front" otype="button" type="file" style="display: none;" accept="image/*">

这块儿代码可以在其他平台正常调用相机相册,但在HarmonyOS上无法拉起相机相册。

HarmonyOS
2024-09-05 11:41:41
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

参考示例如下:

ets:

@Entry 
@Component 
struct WebComponent { 
  controller: web_webview.WebviewController = new web_webview.WebviewController() 
  //定义一个全局的string类型的数组,用来存放通过picker拉起后选择完图片后图片的uri 
  @State uris: Array<string> = [] 
  aboutToAppear() { 
    web_webview.WebviewController.setWebDebuggingAccess(true); 
  } 
  build() { 
    Column() { 
      Web({ src: $rawfile('TestonShowFileSelector.html'), controller: this.controller }) 
        .javaScriptAccess(true) 
        .domStorageAccess(true) 
        .onShowFileSelector((event) => { 
          // //-------调用相册------------------------- 
          console.log('MyFileUploader onShowFileSelector invoked') 
          const photoSelectOptions = new picker.PhotoSelectOptions(); 
          // 过滤选择媒体文件类型为IMAGE_VIDEO_TYPE 
          photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_VIDEO_TYPE; 
          // 选择媒体文件的最大数目 
          photoSelectOptions.maxSelectNumber = 2; 
          const photoViewPicker = new picker.PhotoViewPicker(); 
          photoViewPicker.select(photoSelectOptions).then((photoSelectResult: picker.PhotoSelectResult) => { 
            this.uris = photoSelectResult.photoUris; 
            console.info('photoViewPicker.select to file succeed and uris are:' + this.uris);//file://media/Photo/11/IMG_1713942933_005/IMG_20240424_151353.jpg 
          }).catch((err: BusinessError) => { 
            console.error(`Invoke photoViewPicker.select failed, code is ${err.code}, message is ${err.message}`); 
          }) 
 
          return false 
        }) 
 
    } 
  } 
}

h5:

<!DOCTYPE html> 
  <html> 
  <head> 
  <meta name="viewport" content="width=device-width, initial-scale=1.0" charset="utf-8"> 
  <script> 
  function myFunction(mystr) 
  { 
    document.getElementById("155134").innerHTML = "555"; 
    <!-- let str=objName.test()--> 
  console.log(mystr) 
    console.log("这部分是将ArkTS发送过来的str渲染到h5页面上,或者存在h5侧的变量中") 
  } 
window.onload = function() { 
  // 获取文件输入元素 
  var fileInput = document.getElementById('upload'); 
 
  // 监听文件输入的改变事件 
  fileInput.addEventListener('change', function(e) { 
    // 获取选中的文件 
    var file = e.target.files[0]; 
    // 创建一个FileReader对象 
    var reader = new FileReader(); 
 
    // 定义文件读取完成后的回调函数 
    reader.onloadend = function() { 
      // 获取图片元素 
      var img = document.getElementById('preview'); 
      // 将读取到的结果赋值给图片元素的src属性 
      img.src = reader.result; 
    } 
 
    // 读取文件内容 
    if (file) { 
      reader.readAsDataURL(file); 
    } 
  }); 
} 
  </script> 
  </head> 
  <body> 
  <form id="upload-form" enctype="multipart/form-data"> 
  <!-- <button type="button" onclick="myFunction(mystr)">Click Me!</button>--> 
  <!-- 修改type属性为camera --> 
  <input type="file" id="upload" name="upload" accept="image/*" capture="camera" /> 
  <!-- 添加一个图片元素用于展示图片 --> 
  <img id="preview"/> 
  </form> 
  <div id="155134"></div> 
  </body> 
  </html>
分享
微博
QQ
微信
回复
2024-09-05 16:32:04
相关问题
HarmonyOS H5拉起系统相机的样例代码
259浏览 • 1回复 待解决
HarmonyOS H5如何访问相册
281浏览 • 1回复 待解决
HarmonyOS 相册相机拍照并裁剪
51浏览 • 1回复 待解决
HarmonyOS web组件加载h5h5拉起摄像头
589浏览 • 1回复 待解决
HarmonyOS h5拉起系统扫码页面的demo
226浏览 • 1回复 待解决
鸿蒙请求相册相机的demo?
5509浏览 • 1回复 待解决
如何调用系统相机拍照?
1684浏览 • 1回复 待解决
HarmonyOS 拉起相机拍照
368浏览 待解决
HarmonyOS 无法拉起账号登录页面
407浏览 • 1回复 待解决
HarmonyOS 如何拉起手机相册
306浏览 • 1回复 待解决
H5通过url scheme拉起对应应用
548浏览 • 1回复 待解决