【HarmonyOS NEXT】碰一碰开发分享

关键词:鸿蒙、碰一碰、systemShare、harmonyShare、Share Kit

华为分享新推出碰一碰分享,支持用户通过手机碰一碰发起跨端分享,可实现传输图片、共享wifi等。我们只需调用系统 api 传入所需参数拉起对应分享卡片模板即可,无需对 UI 进行设计。

目录

业务流程

预览效果

宿主设备开发

导入相关模块

定义碰一碰分享事件监听/取消监听方法

处理注册碰一碰分享监听/取消监听事件

配套分享卡片模板


业务流程

预览效果

宿主设备开发

宿主设备当进入可分享页面时,使用 harmonyShare.on() 方法注册碰一碰监听事件,当目标设备与宿主设备进行碰一碰操作后,宿主应用发现设备,调用碰一碰分享事件回调,在回调事件中构造分享数据并使用 sharableTarget.share() 发送。当宿主设备离开可分享页面(包括应用退至后台等场景)时,使用 harmonyShare.off() 方法取消碰一碰监听事件。

导入相关模块

import { uniformTypeDescriptor as utd } from '@kit.ArkData';
import { systemShare, harmonyShare } from '@kit.ShareKit';
import { fileUri } from '@kit.CoreFileKit';

定义碰一碰分享事件监听/取消监听方法

需要注意的是:收到碰一碰分享事件回调后,需尽快调用 sharableTarget.share() 方法发起分享,超过3秒可能会失败。

utd 选项参考链接:@ohos.data.uniformTypeDescriptor (标准化数据定义与描述)。

此处 utd 我选择的是超链接,目标设备接收后可直接跳转链接,当配合 AppLinking 时可实现跨设备打开 app 应用分享页。

/**
   * 碰一碰触发回调
   * @param sharableTarget
   */
private immersiveCallback(sharableTarget: harmonyShare.SharableTarget) {
  const contextFaker: Context = getContext(this);
  let filePath = contextFaker.filesDir + '/exampleKnock1.jpg';
  let shareData: systemShare.SharedData = new systemShare.SharedData({
    utd: utd.UniformDataType.HYPERLINK,
    content: 'https://sharekitdemo.drcn.agconnect.link/ZB3p',
    // 根据title,description,thumbnailUri会生成不同的卡片模板。
    thumbnailUri: fileUri.getUriFromPath(filePath),
    title: '碰一碰分享卡片标题',
    description: '碰一碰分享卡片描述'
  });
  // 发起碰一碰分享
  sharableTarget.share(shareData);
}

/**
   * 注册碰一碰分享监听事件
   */
private immersiveListening() {
  harmonyShare.on('knockShare', this.immersiveCallback);
}

/**
   * 取消碰一碰分享监听事件
   */
private immersiveDisablingListening() {
  harmonyShare.off('knockShare', this.immersiveCallback);
}

处理注册碰一碰分享监听/取消监听事件

进入可分享页面时,注册碰一碰分享监听事件;离开可分享页面(包括应用退至后台等场景)时,取消碰一碰分享监听事件,避免与其他应用产生碰一碰数据传输冲突。

/**
   * 页面隐藏时取消碰一碰分享事件注册
   */
onPageHide(): void {
  let context = getContext(this);
  context.eventHub.emit('onBackGround');
}

/**
   * 组件加载时监听后台切换,应用在后台时取消碰一碰分享事件注册
   */
aboutToAppear(): void {
  this.immersiveListening();
  let context = getContext(this);
  context.eventHub.on('onBackGround', this.onBackGround);
}

/**
   * 组件销毁时监听后台切换,应用在后台时取消碰一碰分享事件注册
   */
aboutToDisappear(): void {
  this.immersiveDisablingListening();
  let context = getContext(this);
  context.eventHub.on('onBackGround', this.onBackGround);
}

/**
   * 调用取消碰一碰分享事件注册
   */
private onBackGround() {
  this.immersiveDisablingListening();
}

配套分享卡片模板

为保证碰一碰分享用户体验,Share Kit支持三种卡片模板。

卡片模板类型

说明

效果图

纯图片布局

纯图片布局只包括预览图。

当分享数据为文件、图片等无需添加标题及描述的场景,推荐使用此卡片模板。

  • 使用方法:

    构造分享数据时,仅传递预览图(thumbnailUri)字段,即可生成此卡片模板。

  • 布局要求

    预览图:支持最小宽高比1:4,超出部分将被裁剪。

沉浸式大卡布局

沉浸式大卡布局包括预览图、标题、描述、应用图标。

当分享数据为链接类型时,需要向用户传递链接的内容,推荐使用此卡片模板。

  • 使用方法:需同时满足以下2个条件:

    1. 构造分享数据时,需同时传入标题(title)、描述(description)字段和预览图(thumbnailUri)字段。

    2. 预览图宽高比小于1:1。

  • 布局要求

    1. 预览图:支持最小宽高比1:4,超出部分将被裁剪。

    2. 标题:最大可显示2行,当文本超过2行时,未能正常在屏幕显示的文本用省略号代替。如果标题末尾有重要信息显示,需应用自行控制字数约20个中文左右。

    3. 描述:仅可显示1行,文本超过1行时,未能正常在屏幕上显示的文本用省略号代替。

    4. 应用图标:无需配置,系统将默认获取应用图标用于显示在卡片底部。

白卡上下布局

白卡上下布局包括预览图、标题、描述、应用图标。当分享数据为链接类型时,需要向用户传递链接的内容,推荐使用此卡片模板。

  • 使用方法:需同时满足以下2个条件:

    1. 构造分享数据时,需同时传入标题(title)、描述(description)字段和预览图(thumbnailUri)字段。

    2. 预览图宽高比大于1:1。

  • 布局要求

    1. 预览图:仅显示在卡片上方,不会铺满整个卡片。

    2. 标题:最大可显示2行,当文本超过2行时,未能正常在屏幕显示的文本用省略号代替。如果标题末尾有重要信息显示,需应用自行控制字数约20个中文左右。

    3. 描述:仅可显示1行,文本超过1行时,未能正常在屏幕上显示的文本用省略号代替。

    4. 应用图标:无需配置,系统将默认获取应用图标用于显示在卡片底部。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/956760.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

I2S是什么通信协议?它如何传输音频数据?它和I2C是什么关系?

首先我们先明确一点,I2S和I2C没有什么关系,如果非要扯点共同点的话那就是它们都是由飞利浦制定的。 I2C我们用的比较多,我们用的大多数的传感器模块用的通信协议就是I2C,SPI,UART这些。 而I2S应用领域比较单一&#…

ubuntu20.04有亮度调节条但是调节时亮度不变

尝试了修改grub文件,没有作用,下载了brightness-controllor,问题解决了。 sudo add-apt-repository ppa:apandada1/brightness-controller sudo apt update sudo apt install brightness-controller 之后在应用软件中找到brightness-contro…

Windows FileZila Server共享电脑文件夹 映射21端口外网连接

我有这样一个使用场景,在外部网络环境下,通过手机便捷地读取存储在电脑上的视频文件。比如在外出旅行、出差,身边没有携带电脑,仅依靠手机设备,就能随时获取电脑里存储的各类视频,无论是学习资料视频、工作…

怎样使用树莓派自己搭建一套ADS-B信号接收系统

0 我们知道,ADS-B全称广播式自动相关监视系统,其实就是飞机发出的广播信号,用明码来对外发送自己的位置、高度、速度、航向等信息,是公开信息。连续接收到一架飞机发出的ADS-B信息后,可以通过其坐标点来描绘出飞机的航…

Qt 5.14.2 学习记录 —— 십칠 窗口和菜单

文章目录 1、Qt窗口2、菜单栏设置快捷键添加子菜单添加分割线和菜单图标 3、工具栏 QToolBar4、状态栏 QStatusBar5、浮动窗口 QDockWidget 1、Qt窗口 QWidget,即控件,是窗口的一部分。在界面中创建控件组成界面时,Qt自动生成了窗口&#xf…

Java Web开发高级——Spring Boot与Docker容器化部署

随着云计算和微服务架构的快速发展,容器化已成为现代应用部署的重要手段。Docker作为最受欢迎的容器化技术之一,使得开发者能够将应用及其所有依赖打包到一个可移植的容器中,简化了开发、测试、部署和运维的流程。本篇文章将通过以下内容讲解…

SSM宠物医院信息管理系统

🍅点赞收藏关注 → 添加文档最下方联系方式咨询本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅 项目视频 宠…

【esp32小程序】小程序篇02——连接git

一、创建仓库 进入gitee官网,登录(如果没有gitee账号的就自行注册一下)。 点击号-->新建仓库 填写好必填信息,然后点击“创建” 二、微信开发者工具配置 在微信开发者工具打开我们的项目。按下面的步骤依次点击 三、验证 点…

回归人文主义,探寻情感本质:从文艺复兴到AI时代,我的情感探索之旅

回归人文主义,探寻情感本质:从文艺复兴到AI时代,我们的情感探索之旅 多年来,我们的团队一直关注人工智能,尤其是AI在音乐领域的应用研究。随着技术的不断演进,我们也不断反思:在“算法、代码、…

【2025 ODA teigha系列开发教程一】实现WPF ViewDirectX DWGDXF 模式图纸的预览查看,缩放

🎨 CAD图纸查看器 下载Teigha SDK 21.6 FOR C# 📖 项目介绍 嗨!欢迎来到CAD图纸查看器项目!这是一个基于WPF和Teigha SDK开发的专业CAD文件查看工具。无论你是工程师、设计师,还是其他需要查看CAD图纸的专业人士&a…

【LeetCode100】--- 寻找重复数

题目传送门 方法一:暴力解法(超时) 算法原理 双重循环,每次固定一个数,再遍历别的数。比较这两个数是否相等, 若相等则返回这个数。就是重复数。 复杂度分析 时间复杂度:O(N方&…

doris 2.1 Queries Acceleration-Hints 学习笔记

1 Hint Classification 1.1 Leading Hint:Specifies the join order according to the order provided in the leading hint. 1.2 Ordered Hint:A specific type of leading hint that specifies the join order as the original text sequence. 1.3 Distribute Hint:Speci…

【2024博客之星】我的年度技术总结:Netty渡劫指南--从线程暴走到百万长连接,这一年我踩过的坑比写的代码还多

时间过得真快,作为一名十年的技术老鸟,这一年来跟Netty打交道打得不少。今天就聊聊这一年来我跟Netty的那些事儿,还有我在学习它技术原理时的一些总结。 导读 Netty再相见:捡起来、用起来Netty原理学习:边啃边写变总结…

Tomcat下载配置

目录 Win下载安装 Mac下载安装配置 Win 下载 直接从官网下载https://tomcat.apache.org/download-10.cgi 在圈住的位置点击下载自己想要的版本 根据自己电脑下载64位或32位zip版本 安装 Tomcat是绿色版,直接解压到自己想放的位置即可 Mac 下载 官网 https://tomcat.ap…

【CSDN博客之星2024】主题创作《总结2024,为了遇见更好的2025》

【博客之星2024】主题创作《总结2024,为了更好的2025》 一、AI技术变革日新月异二、总结我的CSDN2024三、技术深耕,从实践中汲取力量3.1、在数据库技术方面3.2、在javavue前后端开发领域3.3、在项目运维领域3.4、在GIS开发方面 四、2025工作计划五、2025…

MySQL 事务及MVCC机制详解

目录 什么是事务 事务的隔离级别 数据库并发的三种场景 读-写 什么是事务 事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。MySQL提供一种机制,保证我们…

数据库存储上下标符号,sqlserver 2008r2,dm8

sqlserver 2008r2: 数据类型需要用nvarchar插入数据时字符串前需要用N create table test( col1 varchar(50), col2 nvarchar(50) ) insert into test(col1,col2) values(U⁴⁵⁶⁷⁸⁹⁰D₁₂₃₄₅₆₇₈₉₀,U⁴⁵⁶⁷⁸⁹⁰D₁₂₃₄₅₆₇₈₉₀) insert into…

Java高频面试之SE-15

hello啊,各位观众姥爷们!!!本牛马baby今天又来了!哈哈哈哈哈嗝🐶 String 怎么转成 Integer 的?它的原理是? 在 Java 中,要将 String 转换为 Integer 类型,可…

nacos2.3.0 接入pgsql或其他数据库

首先尝试使用官方插件进行扩展,各种报错后放弃,不如自己修改源码吧。 一、官方解决方案 1、nocos 文档地址:Nacos 配置中心简介, Nacos 是什么 | Nacos 官网 2、官方解答:nacos支持postgresql数据库吗 | Nacos 官网 3、源码下载地…

城市电动出行的智慧升级:充电桩可视化管理

通过图扑可视化管理平台,实时监控与优化城市充电桩网络,提高运维效率与用户满意度,支撑绿色交通体系发展,为电动出行打造更加智能化的基础设施解决方案。