HarmonyOS Webview能力咨询?

想咨询一下ArkWeb是否支持使用ShareArrayBuffer和cross-origin isolation,以及是否有程序化读取本地文件的接口?

阅读 421
1 个回答

当前ArkWeb是支持使用ShareArrayBuffer和cross-origin isolation的。

如何读取本地文件,可以参考以下demo:

import fs from '@ohos.file.fs';
import { resourceManager } from '@kit.LocalizationKit';
import { image } from '@kit.ImageKit';
import { fileUri } from '@kit.CoreFileKit';
@Entry
@Component
struct FunAPage {
  @State message: string = 'Hello funA';
  @State filePath:string = ''
  @State imageUri:string = ''
  @State pixelMap:image.PixelMap  | undefined = undefined
  aboutToAppear(): void {
    this.setImageUriToFile()
  }
  setImageUriToFile(){
    let context = getContext(this);
    let filePath = context.filesDir + '/test.png';
    //文件的字节数据,该处可替换为其他各种来源的字节数据
    let arrayBuff = context.resourceManager.getRawFileContentSync('food.png').buffer
    let file = fs.openSync(filePath,fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
    fs.writeSync(file.fd,arrayBuff)
    fs.closeSync(file.fd)
    this.filePath = filePath
  }
  getImageUri(){
    this.imageUri = fileUri.getUriFromPath(this.filePath)
  }

  async getPixelMapByImage():Promise<image.PixelMap>{
    const context : Context = getContext(this);
    // 获取resourceManager资源管理器
    const resourceMgr : resourceManager.ResourceManager = context.resourceManager;
    let rawFileDescriptor = await resourceMgr.getRawFd('food.png')
    const imageSource : image.ImageSource = image.createImageSource(rawFileDescriptor);
    let decodingOptions : image.DecodingOptions = {
      editable: true,
      desiredPixelFormat: 3,
    }
    // 创建pixelMap并进行简单的旋转和缩放
    const pixelMap:image.PixelMap = await imageSource.createPixelMap(decodingOptions)
    this.pixelMap =  pixelMap
    return pixelMap;
  }

  build() {
    Row() {
      Column() {
        Button('uri图片展示')
          .onClick(()=>{
            this.getImageUri()
          })
        Image(this.imageUri)
          .width(200)
          .height(200)
        Button('pixelMap图片展示')
          .onClick(()=>{
            this.getPixelMapByImage()
          })
        Image(this.pixelMap)
          .width(200)
          .height(200)
      }
      .width('100%')
    }
    .height('100%')
  }
}

注意:

1、web当前不支持按行读取和识别特定行。

2、web可以通过file协议加载沙箱资源,绝大多数都是html和js,css等资源,docx文档内容无法加载,目前只支持pdf文件。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进