HarmonyOS H5如何访问相册?

HarmonyOS H5如何访问相册?

HarmonyOS
2024-11-05 10:39:14
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
zxjiu

​此demo用于当web组件加载一个h5页面时,用与h5页面用input标签调用手机相册以及系统相机。

注入JavaScript对象到window对象中,并在window对象中调用该对象的方法。注册后,须调用refresh接口生效。

注册对象的名称,与window中调用的对象名一致。注册后window对象可以通过此名字访问应用侧JavaScript对象。​

import business_error from '@ohos.base'; 
import picker from '@ohos.file.picker'; 
import { BusinessError } from '@ohos.base'; 
import common from '@ohos.app.ability.common'; 
import web_webview from '@ohos.web.webview'; 
 
class pickImage { 
  constructor() { 
  } 
 
  testPickImage(): string { 
    try { 
 
      let PhotoSelectOptions = new picker.PhotoSelectOptions(); 
      PhotoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE; 
      PhotoSelectOptions.maxSelectNumber = 5; 
      let photoPicker = new picker.PhotoViewPicker(); 
      photoPicker.select(PhotoSelectOptions).then((PhotoSelectResult: picker.PhotoSelectResult) => { 
        console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult)); 
      }).catch((err: BusinessError) => { 
        console.error('PhotoViewPicker.select failed with err: ' + JSON.stringify(err)); 
      }); 
    } catch (error) { 
      let err: BusinessError = error as BusinessError; 
      console.error('PhotoViewPicker failed with err: ' + JSON.stringify(err)); 
    } 
    return '121'; 
 
  } 
 
} 
 
class cameraImage { 
  constructor() { 
  } 
 
  testCameraImage(): string { 
    const context = getContext(this) as common.UIAbilityContext 
    context.startAbilityForResult({ 
      action:"ohos.want.action.imageCapture", 
      parameters:{ 
        callBundleName:"com.hm.imageshow" 
      } 
    },(err,data) => { 
      console.info("imageCapture:" + `${JSON.stringify(data)}`) 
    }) 
    return '1221'; 
  } 
 
} 
 
@Entry 
@Component 
struct photo { 
  controller: web_webview.WebviewController = new web_webview.WebviewController(); 
  @State webPickImage: pickImage = new pickImage(); 
  @State webCameraImage: cameraImage = new cameraImage(); 
 
  aboutToAppear(){ 
    // 配置Web开启调试模式 
    web_webview.WebviewController.setWebDebuggingAccess(true); 
  } 
 
  build() { 
    Column() { 
      Button('refresh') 
        .onClick(() => { 
          try { 
            this.controller.refresh(); 
          } catch (error) { 
            let e: business_error.BusinessError = error as business_error.BusinessError; 
            console.error(`ErrorCode: ${e.code},  Message: ${e.message}`); 
          } 
        }) 
      Button('Register JavaScript To Window') 
        .onClick(() => { 
          try { 
            this.controller.registerJavaScriptProxy(this.webPickImage, "pickImageName", ["testPickImage"]); 
            this.controller.registerJavaScriptProxy(this.webCameraImage, "cameraImageName", ["testCameraImage"]); 
          } catch (error) { 
            let e: business_error.BusinessError = error as business_error.BusinessError; 
            console.error(`ErrorCode: ${e.code},  Message: ${e.message}`); 
          } 
        }) 
      Web({ src: $rawfile('Test1128.html'), controller: this.controller }) 
        .javaScriptAccess(true) 
    } 
  } 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.

html:

<!DOCTYPE html> 
  <html> 
  <body> 
  <button type="button" onclick="pickImage()">唤起图库</button> 
  <button type="button" onclick="cameraImage()">唤起照相机</button> 
  <p id="demo"></p> 
  <script> 
  function pickImage() { 
    let str=pickImageName.testPickImage(); 
  } 
function cameraImage(){ 
  let str2=cameraImageName.testCameraImage(); 
} 
</script> 
  </body> 
  </html>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
分享
微博
QQ
微信
回复
2024-11-05 16:33:19


相关问题
HarmonyOS h5如何实现保存图片到相册
687浏览 • 1回复 待解决
HarmonyOS h5客服无法上传相册的图片
444浏览 • 1回复 待解决
HarmonyOS 浏览器访问H5,并唤起App
656浏览 • 1回复 待解决
HarmonyOS uniapp转H5保存相册和保存文件
502浏览 • 1回复 待解决
HarmonyOS H5页面保存图片到本地相册
530浏览 • 1回复 待解决
HarmonyOS web组件加载h5h5拉起摄像头
1220浏览 • 1回复 待解决
HarmonyOS 本地H5加载
641浏览 • 1回复 待解决
HarmonyOS H5桥接
569浏览 • 1回复 待解决
HarmonyOS h5应用如何唤起HarmonyOS应用?
730浏览 • 1回复 待解决
HarmonyOS h5拉起app,如何获取参数
431浏览 • 1回复 待解决
HarmonyOS H5和原生交互
643浏览 • 1回复 待解决
HarmonyOS webview h5的localstorage
786浏览 • 1回复 待解决
HarmonyOS web原生和H5如何交互?
1168浏览 • 1回复 待解决
HarmonyOS 如何H5传递cookie值
402浏览 • 1回复 待解决
HarmonyOS 如何修改H5内的localstorage
319浏览 • 1回复 待解决
HarmonyOS H5代码如何复用?
893浏览 • 1回复 待解决