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

【每日学点鸿蒙知识】Json字典问题、高度变化问题、开放测试版本问题、动态库单架构选择、WebView和H5交互

1、HarmonyOS JSON.stringify一个HashMap的问题?
let data = new HashMap<string, string>()   
data.set("action", "test") 
let text = JSON.stringify(data)

输出一个text={}
这边想添加多个并且不同的key和value,并返回json的字符串,如何实现呢?

可以参考以下代码:

const map1: HashMap<string, string> = new HashMap();
map1.set("a", "avalue");
map1.set("b", "bValue");
const jsonObject: Record<string, Object> = {};
map1.forEach((value, key) => {
  if (key != undefined && value != undefined) {
    jsonObject[key] = value;
  }
})
const jsonString = JSON.stringify(jsonObject)
console.log('jsonString', jsonString)
2、HarmonyOS 页面高度发生变化?

在安全区域配置中,ExpandSafeArea仅针对当前组件生效,不会向父组件或子组件传递。因此使用过程中,所有相关组件必须配置该属性。
ExpandSafeArea的属性判断早于position属性生效。在使用过程中如果系统判断当前组件的位置不涉及安全区域(Position生效前),则ExpandSafeArea会失效。如Stack中放置组件,默认在居中位置,测试可能会出现ExpandSafeArea失效的情况。可以在父组件Stack配置alignContent为Alignment.Top

如果无法使能ExpandSafeArea,但是需要将组件部署在安全区内,可以通过将y坐标向上调整128px(-px2vp(128))强制将位置配置在状态栏上。
详情参见如下文档:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-universal-attributes-expand-safe-area.md

3、HarmonyOS 开放测试版本已通过自动审核,但用户列表中邀请链接还是未发送状态?

可以在华为应用市场的分发详情页面中手动触发邮件发送。 在华为应用市场的AGC中查看当前所有用户的邀请状态。可以给未收到邀请的测试用户重新发送邀请链接,并提醒他们参与测试。

4、希望在打包的 hap 中只带 arm64_v8a 的 .so 库,不知道在何种方法可以达到类似的效果?

项目中依赖了几个 har,这些 har 里面带了 arm64-v8a 和 x86_64 两种架构的 .so 库,希望在打包的 hap 中只带 arm64_v8a 的 .so 库,不知道在何种方法可以达到类似的效果?

目前只知道 buildOption.externalNativeOptions 中能配置 CMakeLists.txt 的 abiFilter,也许需要一个打包时的 abiFilter 配置来过滤掉 har 中特定架构的 so,类似 xxxx 中的:

xxxx {defaultConfig {ndk {abiFilters ‘arm64-v8a’, ‘x86_64’}}}

可以参阅:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-hvigor-cpp-V5 可以在nativeLib–>filter–>excludes下配置排除某些.so例如:

//配置筛选依赖.so资源文件的过滤规则
“nativeLib”: {
	“filter”: {
		//按照.so文件的优先级顺序,打包最高优先级的.so文件
		“pickFirsts”: [“/1.so"],
		//按照.so文件的优先级顺序,打包最低优先级的.so文件
		“pickLasts”: ["/2.so”],
		//排除的.so文件
		“excludes”: [
			"/3.so", //排除所有名称为“3”的so文件"
			/x86_64/*.so //排除所有x86_64架构的so文件
		],
		//允许当.so重名冲突时,使用高优先级的.so文件覆盖低优先级的.so文件
		“enableOverride”: true
	}
}
5、HarmonyOS WebView和H5交互的问题?

目前其他平台开发中与H5进行数据交互的方式为:H5那边调用window.prompt()或者window.XXXX.postMessage()方法,原生这边通过WebView代理回调的方式,拿到H5传过来的jsonString,进行数据解析,获得提前约定好的方法名和参数,然后原生再去调用对应的方法,实现js调用原生方法的功能。请问HarmonyOS原生APP能够去接收prompt()或者postMessage()的消息回调么?

可以通过runJavaScript API,在页面加载后注入代理函数,参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5#onloadintercept10
可使用onPrompt 拦截 window.prompt(),参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5#onprompt9


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

相关文章:

  • 线性代数自学资源推荐我的个人学习心得
  • Win11+WLS Ubuntu 鸿蒙开发环境搭建(二)
  • 创龙3588——debian根文件系统制作
  • 《深度学习梯度消失问题:原因与解决之道》
  • 分布式微服务项目___某污水处理项目
  • [最佳方法] 如何将视频从 Android 发送到 iPhone
  • 【每日学点鸿蒙知识】人脸活体检测、NodeController刷新、自动关闭输入框、Row设置中间最大宽、WebView单例
  • JavaWeb 开发进阶 - 数据库交互与框架应用
  • 五、Hadoop环境搭建之模板虚拟机准备
  • tomcat窗口闪退,以及在eclipse上面运行不出来
  • HTML5滑块(Slider)
  • 从家谱的层级结构 - 组合模式(Composite Pattern)
  • es单机安装脚本自动化
  • hive-sql 计算每年在校生人数
  • 写在2024的最后一天
  • 【浏览器】缓存
  • Android 检测设备是否 Root
  • 【数据结构】线性数据结构——栈
  • 本地部署Hello-Algo打造私人算法教练让算法学习告别网络限制
  • 解构大语言模型(LLM)
  • 如何免费解锁 IPhone 网络
  • 如何使用 ChatGPT Prompts 写学术论文?
  • 嵌入式单片机中SPI外设控制与实现
  • 网神SecFox运维安全管理与审计系统 /authService/login接口反序列化漏洞复现 [附POC]
  • Vue.js组件开发-实现多级菜单
  • want php学习笔记