当前位置: 首页 > article >正文

【每日学点鸿蒙知识】数据迁移、大量图片存放、原生自定义键盘调用、APP包安装到测试机、photoPicker顶部高度

1、迁移(克隆)手机中经过 ArkData (方舟数据管理)服务持久化后的数据?

在用户手动迁移(克隆)手机数据至另一台设备后,使用 ArkData (方舟数据管理)服务持久化的数据是否会同步迁移至新设备中?
例如:调用 用户首选项 flush 方法进行持久化的数据。

针对应用沙箱数据,HarmonyOS NEXT提供“数据迁移框架”统一调度应用数据迁移任务
参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/app-data-migration-overview-V5

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、HarmonyOS 项目中大量图片资源存放位置最佳实践?

项目中存在大量的图片资源,华为是有最佳实践方案放置目录,目前项目工程存在base/media与rawfile两个目录,最佳实践放在哪个目录下?

可以根据需求来选择

  • base目录:base目录是默认存在的目录,二级子目录element用于存放字符串、颜色、布尔值等基础元素,media、profile存放媒体、动画、布局等资源文件。目录中的资源文件会被编译成二进制文件,并赋予资源文件ID。通过指定资源类型(type)和资源名称(name)引用。
  • rawfile目录:支持创建多层子目录,子目录名称可以自定义,文件夹内可以自由放置各类资源文件。目录中的资源文件会被直接打包进应用,不经过编译,也不会被赋予资源文件ID。通过指定文件路径和文件名引用。
3、HarmonyOS H5页面怎么调用原生自定义键盘?

对javaScriptProxy和runJavaScript封装,实现JSBridge通信方案。适用于H5调用原生侧函数。可以参考:https://gitee.com/harmonyos/codelabs/tree/master/SelectContact

这个链接中有可供参考的demo。demo可参考如下:Web(xxx)

.onShowFileSelector((event) => {
  console.warn(’…MyFileUploader onShowFileSelector invoked’);

  console.warn(’…invoke camera’)
  this.invokeCamera(uri => {
    console.warn(’…uri: ’ + uri)
    event?.result.handleFileList([uri]);
  });
  return true;
})

invokeCamera(callback?: (uri: string) => void) {
  const context = getContext(this) as common.UIAbilityContext
  context.startAbilityForResult({
    action: “ohos.want.action.imageCapture”,
    parameters: {
      callBundleName: “com.example.mydemo”
    }
  }, (err: BusinessError, data: common.AbilityResult) => {
    if (err && err.code != 0) {
      console.error(“imageCapture error:” + ${JSON.stringify(err)});
      return;
    }
    console.warn(“imageCapture data:” + ${JSON.stringify(data)});
    let uri = data?.want?.parameters?.resourceUri;
    if (callback && uri) {
      callback(uri.toString());
    }
  })
}

结合Web组件的onShowFileSelector事件,已经能够拉起系统摄像机并返回给h5的input标签,并自动触发了其onchange事件。
对于“ohos.want.action唤起键盘”可参考文档链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-ability-wantconstant-V5

根据问题描述,示例代码如下:

<!--index.html-->
  <!DOCTYPE html>
  <html lang="en-gb">
  <head>
  <title>WebView MessagePort Demo</title>
  </head>

  <body>
  <h1>Html5 Send and Receive Message</h1>
  <h3 id="msg">Receive string:</h3>
  <h3 id="msg2">Receive arraybuffer:</h3>
  <div style="font-size: 10pt; text-align: center;">
  <input type="button" value="Send String" onclick="showKeyboard();" /><br/>
  </div>
  </body>
  <script src="index.js">
  </script>
  </html>

  import web_webview from '@ohos.web.webview';
@Entry
@Component
struct WebComponent {
  controller: web_webview.WebviewController = new web_webview.WebviewController();
  ...
  Web({ src: $rawfile('index.html'), controller: this.controller })
  .onShowFileSelector((event) => {
  console.warn(’…MyFileUploader onShowFileSelector invoked’);

  console.warn(’…invoke keyboard’)
  this.invokeKeyboard(uri => {
  console.warn(’…uri: ’ + uri)
  event?.result.handleFileList([uri]);
});
return true;
})

invokeKeyboard(callback?: (uri: string) => void) {
  const context = getContext(this) as common.UIAbilityContext
  context.startAbilityForResult({
    action: “ohos.want.action.dial”,
    parameters: {
      callBundleName: “com.example.mydemo”
    }
  }, (err: BusinessError, data: common.AbilityResult) => {
    if (err && err.code != 0) {
      console.error(“imageCapture error:” + ${JSON.stringify(err)});
      return;
    }
    console.warn(“imageCapture data:” + ${JSON.stringify(data)});
    let uri = data?.want?.parameters?.resourceUri;
    if (callback && uri) {
      callback(uri.toString());
    }
  })
}
}
4、HarmonyOS 怎样把生成的app包,安装到测试手机上?

现在app功能开发完成了,想要提交给测试部分测试,构建了app包,但是不知道怎么让测试机安装这个包

可通过开放性测试的方式,经应用市场将.app安装到测试手机上。
开放性测试指导文档:https://developer.huawei.com/consumer/cn/doc/AppGallery-connect-Guides/agc-betatest-introduction-0000001071477284

APP:
在这里插入图片描述

元服务:
在这里插入图片描述

5、HarmonyOS 应该如何拿到photoPicker顶部的固有高度?

目前暂时没有API或相关工具支持实现获取photoPicker顶部的固有高度。photoPicker顶部的高度为56vp,可以基于此验证。


http://www.kler.cn/a/452960.html

相关文章:

  • VSCode 插件开发实战(十二):如何集成Git操作能力
  • c# RSA加解密工具,.netRSA加解密工具
  • 嵌入式轻量级开源操作系统:HeliOS的使用
  • 家政预约小程序数据库设计
  • 编码转换(实例)
  • 基于谱聚类的多模态多目标浣熊优化算法(MMOCOA-SC)求解ZDT1-ZDT4,ZDT6和工程应用--盘式制动器优化,MATLAB代码
  • (八)循环神经网络_门控循环单元GRU
  • 从汽车企业案例看仓网规划的关键步骤(视频版)
  • 项目文档-代码检查报告
  • 无人机巡检大疆智图测绘技术详解
  • ubuntu 轻松安装Conda
  • 【DSVW】攻防实战全记录
  • 2024年度个人总结
  • 题海拾贝:力扣 88.合并两个有序数组
  • Python3 爬虫 开发Scrapy下载器中间件
  • 开源轻量级IM框架MobileIMSDK的鸿蒙NEXT客户端库已发布
  • Python基础学习的资料
  • 每天40分玩转Django:Django类视图
  • Oracle、ACCSEE与TDMS的区别
  • 华为OD E卷(100分)31-敏感字段加密
  • github如何给本机绑定 ssh密钥(MACOS)
  • React图标库: 使用React Icons实现定制化图标效果
  • 利用Java爬虫获取速卖通(AliExpress)商品详情的详细指南
  • Xshell 和 Xftp 更新提示问题的解决方法及分析
  • 【机器学习】机器学习的基本分类-半监督学习(Semi-supervised Learning)
  • Go语言gRPC与gozero的api