跨设备传文件,用 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文档,里面有完整示例。
还有什么具体问题直接说,不扯废话。