HarmonyOS NEXT鸿蒙开发:同应用跨设备数据同步-申请权限 作者:马育民 • 2025-12-18 17:29 • 阅读:10002 本博客根据 [HarmonyOS NEXT鸿蒙开发:申请user_grant权限封装模块](https://www.malaoshi.top/show_1GW2O6eNJjE3.html "HarmonyOS NEXT鸿蒙开发:申请user_grant权限封装模块") 修改 # 配置权限 在应用配置文件中声明必要权限,否则无法访问分布式设备和同步数据 ### 局域网内设备同步 跨设备同步,仅需 `DISTRIBUTED_DATASYNC` 和 `GET_DISTRIBUTED_DEVICE_INFO` 两个核心权限即可。 鸿蒙分布式软总线的核心是 **近距离设备直连**,即:同一 **Wi-Fi 局域网内** 的设备(如手机 + 平板连同一路由器)、或 **通过蓝牙配对的设备**,同步数据时走 **“设备间直连通道”**,**不经过公网,因此无需 INTERNET 权限** 必须添加下面权限: ```json { "module": { "package": "com.your.app.package", "reqPermissions": [ { "name": "ohos.permission.DISTRIBUTED_DATASYNC", // 分布式数据同步核心权限 "reason": "$string:distributed_datasync_reason", "usedScene": { "abilities": ["EntryAbility"], // 关联的Ability "when": "always" } } ] } } ``` 在 `\resources\base\element\string.json` 添加申请权限原因: ``` { "name": "distributed_datasync_reason", "value": "需要分布式存储权限" } ``` ### 跨局域网 / 远程同步(需要 INTERNET) 若需实现 “不在同一局域网的设备同步”(如手机在家、平板在公司),鸿蒙会通过华为账号关联的云同步服务中转数据: 数据先上传到华为云,再同步到远端设备,此时必须申请 INTERNET 权限; 此外,若你的应用本身有网络请求(如接口调用、云备份),也需主动声明该权限。 根据情况需要,添加下面权限: ``` ohos.permission.INTERNET ``` # 向用户申请授权 同时需要在应用 **首次启动** 时 **弹窗向用户申请授权** ### 实现方式一:在UIAbility中向用户申请授权 写在 `EntryAbility.ets` 的 `onWindowStageCreate()` 方法中,参考 [HarmonyOS NEXT鸿蒙开发:申请user_grant权限封装模块](https://www.malaoshi.top/show_1GW2O6eNJjE3.html "HarmonyOS NEXT鸿蒙开发:申请user_grant权限封装模块") ### 实现方式二:在UI中向用户申请授权 在首页(如 `LoginPage.ets` 或 `Index.ets` )中添加下面代码: ``` async aboutToAppear(): Promise { const pg = 'ohos.permission.DISTRIBUTED_DATASYNC' const reason = '需要使用分布式数据库权限' const cpg = await checkPermissionGrant(pg) if(cpg){ console.log(TAG,` 检测授予 ${pg} 授权`) }else{ // 申请所有权限 // requestAllPermissionsFromUser(getContext()) // 只分布式数据同步权限 requestPermissionFromUserAndShow(pg,reason,getContext()) // 二次请求 const rpos = await requestPermissionOnSetting(pg,getContext()) if(!rpos){ try { promptAction.showToast({ message: reason, // 提示文本 duration: 2000, // 显示时长(毫秒),默认1500ms,范围[1500, 3000] bottom: 100 // 距离屏幕底部的距离(像素) }); } catch (error) { console.error(TAG,"promptAction.showToast() 报错!") } } } } ``` 原文出处:http://www.malaoshi.top/show_1GW2QinZffWU.html