首页 经验

诗词速通,漫游泡泡,词汇宝,新维日语,简易物理,点此下载


跨设备传文件,用 Distributed Service Kit

时间: 2026-04-15 11:11:39

(部分内容来自网络,其真实性存疑,为了避免对您造成误导,请谨慎甄别。)

结论:跨设备传文件,用 Distributed Service Kit


你发的三个链接里:

- service-collaboration-kit-guide:页面内容基本是空的,没实质内容

- telephony-kit:这是蜂窝通信(电话、网络状态),跟传文件无关

- distributed-service-kit:这个才是正主


Distributed Service Kit 的分布式文件系统,是实现跨设备文件传输的核心。




具体怎么实现


核心API

import { fileIo as fs } from '@kit.CoreFileKit';
import { distributedDeviceManager } from '@kit.DistributedServiceKit'


发送端(设备A)—— 把文件放到分布式目录

let context = getContext(this) as common.UIAbilityContext;
let distributedDir: string = context.distributedFilesDir;
let filePath: string = distributedDir + '/test.txt';

let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); fs.writeSync(file.fd, '文件内容'); fs.closeSync(file.fd);

只要把文件放进 distributedFilesDir 这个目录,系统自动同步到同账号的其他设备。


接收端(设备B)—— 连接并读取

// 1. 获取设备A的networkId
let dmInstance = distributedDeviceManager.createDeviceManager("com.example.hap");
let deviceInfoList = dmInstance.getAvailableDeviceListSync();
let networkId = deviceInfoList[0].networkId;

// 2. 建立连接 await fs.connectDfs(networkId, {     onStatus: (networkId, status) => console.log('状态:', status) });
// 3. 读取分布式目录下的文件 let context = getContext(); let pathDir = context.distributedFilesDir; let filePath = pathDir + '/test.txt'; let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE); let arrayBuffer = new ArrayBuffer(4096); let num = fs.readSync(file.fd, arrayBuffer, { offset: 0, length: arrayBuffer.byteLength }); fs.closeSync(file.fd);
// 4. 用完断开 fs.disconnectDfs(networkId);

官方文档里有完整代码示例。




前置条件(必须满足)


1. 两台设备登录同一个华为账号

2. 打开Wi-Fi和蓝牙(建议同一局域网,但不是必须)

3. 申请权限:在 module.json5 里加上 ohos.permission.DISTRIBUTED_DATASYNC

4. 同一应用:两台设备都装了你的应用,且包名相同




补充:Service Collaboration Kit 是干啥的


这个Kit不是用来传文件的,是用来跨设备调用能力的。


典型场景:在平板上写备忘录,点一下按钮,直接唤起手机的相机拍照,拍完照片自动传回平板。


代码示例:

import collaborationKit from '@kit.CollaborationKit';

// PC/平板端:发起协同请求,调用手机的相机 let missionId = await collaborationKit.startMission({     deviceId: targetDeviceId,     abilityName: 'CameraAbility',     parameters: { resolution: '1080p' } });

这个是调能力用的,不是传文件用的。




总结


你要的功能用的Kit核心机制
跨设备传文件Distributed Service Kit分布式文件系统 + distributedFilesDir 目录
跨设备调能力(如调用相机)Service Collaboration Kit协同服务API


如果你要写代码实现,直接看华为官方的Codelab和API文档,里面有完整示例。


还有什么具体问题直接说,不扯废话。


还有问题,向AI提问。


上一个 NearLink Kit(星闪服务)与蓝牙、Wi-Fi 7 的区别 文章列表 下一个 Distributed Service Kit简介

(汉语/英语/日语/法语/德语)语音助手(识别/合成),智能翻译,高中物理动画,数据分析,数据可视化,电话: 18201798243(同v)

© 2019-至今 适观科技

沪ICP备17002269号