【OpenHarmony/HarmonyOs 】CheckMe 隐私保护实践:禁止 AI 识图、精细化权限管控与本地数据边界

发布时间:2026/8/30 2:48:25

【OpenHarmony/HarmonyOs 】CheckMe 隐私保护实践:禁止 AI 识图、精细化权限管控与本地数据边界
【OpenHarmony/HarmonyOs 】CheckMe 隐私保护实践禁止 AI 识图、精细化权限管控与本地数据边界本文基于CheckMe项目展开主题聚焦安全与隐私并进一步结合“禁止 AI 识图”“精细化权限管控”“隐私保护方案”三个方向讲一个设备监控类 App 如何建立清晰的数据边界。设备信息类 App 很容易踩一个坑为了功能完整申请一堆权限为了体验智能接入一堆识别能力为了分析方便把数据传到服务端。但CheckMe这种应用的核心卖点恰恰应该是可信用户愿意让你读取设备状态用户愿意让你做硬件检测用户愿意让你临时获取位置用户不希望你偷偷识别图片、上传隐私、长期跟踪所以这篇文章的关键词不是“能拿多少数据”而是少拿、明示、本地、可拒绝。一、先看项目权限清单CheckMe在module.json5中声明了权限requestPermissions: [ {name:ohos.permission.GET_NETWORK_INFO,reason:$string:permission_network_reason,usedScene: {abilities: [EntryAbility],when:always} }, {name:ohos.permission.GET_WIFI_INFO,reason:$string:permission_network_reason,usedScene: {abilities: [EntryAbility],when:always} }, {name:ohos.permission.APPROXIMATELY_LOCATION,reason:$string:permission_location_reason,usedScene: {abilities: [EntryAbility],when:inuse} }, {name:ohos.permission.LOCATION,reason:$string:permission_location_reason,usedScene: {abilities: [EntryAbility],when:inuse} }, {name:ohos.permission.CAMERA,reason:$string:permission_camera_reason,usedScene: {abilities: [EntryAbility],when:inuse} } ]从这个配置能看出几个安全设计点网络状态权限用于展示网络信息定位权限仅在使用时申请相机权限用于手电筒、相机测试等明确功能没有声明相册读取权限没有声明人脸识别或生物认证权限没有声明后台定位这对“禁止 AI 识图”主题非常重要项目的媒体页只展示编解码和格式能力不读取用户图库不上传图片也不做云端识图。二、禁止 AI 识图从产品边界开始设计“禁止 AI 识图”不只是一个开关而是一套产品边界。在CheckMe中媒体能力页关注的是设备支持什么格式JPEGPNGWebPGIFBMPHEIF / HEICH.264 / H.265AV1HLS / DASH / RTSP对应服务代码如下public getSupportedImageFormats(): MediaCapability[] { return [ { capabilityId: image_jpeg, capabilityName: JPEG, supportedFormats: [jpg, jpeg], maxResolution: 16384x16384, isSupported: true, codecInfo: EXIF 支持 }, { capabilityId: image_png, capabilityName: PNG, supportedFormats: [png], maxResolution: 16384x16384, isSupported: true, codecInfo: 透明通道支持 }, { capabilityId: image_heif, capabilityName: HEIF / HEIC, supportedFormats: [heif, heic], maxResolution: 16384x16384, isSupported: true, codecInfo: 高效压缩 } ]; }注意这里只做“能力展示”没有读取用户图片也没有调用视觉识别模型。如果后续项目真的要接入 AI 识图我建议至少加三层保护默认关闭 AI 识图。每次识别前由用户主动选择图片。明确提示识别位置端侧识别还是云端识别。更严格一点可以增加一个配置项interfacePrivacySettings{ allowImageRecognition:boolean; allowCloudRecognition:boolean; allowSaveRecognitionHistory:boolean; }默认值应该是const defaultPrivacySettings:PrivacySettings{allowImageRecognition:false,allowCloudRecognition:false,allowSaveRecognitionHistory:false};这样写文章时就可以把“禁止 AI 识图”从口号落到工程方案上。三、精细化权限管控手电筒是一个好例子很多应用会在启动时一次性申请相机权限但CheckMe没有这么做。手电筒能力放在QuickToolsService中先查询能力和权限再在用户实际使用时申请。privateasyncisCameraPermissionGranted(context: common.UIAbilityContext):Promiseboolean {try{constatManager: abilityAccessCtrl.AtManager abilityAccessCtrl.createAtManager();consttokenId:number context.applicationInfo.accessTokenId;conststatus: abilityAccessCtrl.GrantStatusawaitatManager.checkAccessToken(tokenId,ohos.permission.CAMERA);returnstatus abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED; }catch(_e) {returnfalse; } }工具页展示能力时不触发权限弹窗publicasyncgetTorchCapabilityHint(context: common.UIAbilityContext):Promisestring {constcamManager: camera.CameraManager camera.getCameraManager(context);if(!camManager.isTorchSupported()) {return设备不支持; }constgranted:booleanawaitthis.isCameraPermissionGranted(context);if(!granted) {return需相机权限; }return可用; }这段很值得写进文章因为它体现了一个隐私友好的交互页面展示“需相机权限”不在用户没点击时弹窗用户点击手电筒时再申请用户拒绝后给出明确提示真正执行时才申请权限publicasyncensureCameraPermission(context: common.UIAbilityContext):Promiseboolean {constatManager: abilityAccessCtrl.AtManager abilityAccessCtrl.createAtManager();constrequest awaitatManager.requestPermissionsFromUser( context, [ohos.permission.CAMERA] );returnrequest.authResults!undefined request.authResults.length0 request.authResults[0] 0; }这种模式可以总结为先解释再申请先判断再执行。四、定位权限只在使用中申请并给出失败原因定位是隐私敏感能力项目中使用了近似位置和精确位置privateasyncrequestLocationPermissionsIfNeeded(context: common.UIAbilityContext):Promiseboolean {constwantPermissions:Permissions[] [ohos.permission.APPROXIMATELY_LOCATIONasPermissions,ohos.permission.LOCATIONasPermissions];constatManager: abilityAccessCtrl.AtManager abilityAccessCtrl.createAtManager();constresult awaitatManager.requestPermissionsFromUser( context, wantPermissions );returnresult.authResults!undefined result.authResults.every((v:number) v 0); }如果用户拒绝项目不会继续“硬拿数据”而是返回明确失败原因if(!permissionOk) { AppStorage.setOrCreate(locationAuthorized,false);return{ location:null, failureReason: LocationFailureReason.PERMISSION_DENIED, failureHint:定位权限被拒绝。请在系统设置中允许精确位置。}; }这类失败态非常重要。权限保护不是只写配置用户拒绝后页面仍然应该可理解为什么没有数据需要打开哪个权限不授权是否还能使用其他功能隐私友好的 App 不应该把“拒绝授权”当作异常而应该把它当作正常路径。五、隐私保护方案给数据分级对于CheckMe这样的应用可以把数据分为三类数据类型示例风险等级处理方式普通设备状态CPU、内存、电池百分比低本地展示环境与网络状态WiFi、IP、定位精度中按需展示不默认导出高敏感数据精确位置、图片、人脸高默认关闭用户主动触发项目已有的数据模型中包含 CPU、内存、网络、位置、相机、媒体等能力。如果要继续强化隐私可以增加一个统一的数据导出策略interfaceExportPolicy{ includeLocation:boolean; includeNetworkAddress:boolean; includeDeviceIdentifier:boolean; includeMediaFileMetadata:boolean; }默认导出时建议不导出精确经纬度不导出完整 IP 或设备唯一标识不导出图片 EXIF不保存用户图片内容不上传检测报告这样即使后续做近场分享、报告导出、AI 分析也有明确边界。六、本地优先设备监控数据不必上云CheckMe的大多数能力都可以本地完成CPU 信息本地读取内存信息本地读取存储信息本地读取电池信息本地读取媒体支持能力本地枚举硬件检测本地完成这给隐私保护提供了天然优势。文章里可以明确写出本地优先原则能在端侧计算的不上传。能展示摘要的不展示原始敏感数据。能让用户手动触发的不自动后台触发。能用一次性权限的不长期持有。如果后续接入端侧 AI也应该优先选择端侧推理而不是默认云端识别。端侧 AI 的优势不只是速度也包括数据不离开设备。七、禁止 AI 识图的 UI 表达建议如果要把这个主题继续做成产品能力可以在设置页增加一个“隐私保护”分组隐私保护[关闭]AI 图片识别[关闭]云端识别[关闭]保存识别历史[开启]报告导出前脱敏当用户进入媒体页时只展示图片格式支持视频编解码支持音频编解码支持流媒体协议支持如果用户点击“识别图片”再弹出说明该功能需要你主动选择图片。 默认仅在本机处理不上传原图。 你可以随时在隐私设置中关闭。这种表达比简单写一句“我们重视隐私”更有说服力。八、文章小结CheckMe这个项目适合用来写隐私保护主题因为它天然涉及多个敏感边界相机权限定位权限网络状态媒体能力设备状态桌面卡片数据但它的实现思路比较克制不启动时乱弹权限不读取用户图库不默认做 AI 识图不把位置失败当崩溃不把所有数据都上传能本地处理就本地处理最后总结成一句话一个好的 HarmonyOS 工具类应用不是能拿多少权限而是能把权限用得多克制。️参考资料华为开发者文档Requesting User Authorization华为开发者文档Application Permission Request Best Practices华为开发者文档Core Vision Kit

相关新闻

AI 架构能力——新一代架构图绘制方法论

AI 架构能力——新一代架构图绘制方法论

2026/8/29 12:22:45

一、需求背景:AI 辅助生成架构图的两种路径 Mermaid 等代码化方案适合文档嵌入,但 AI 还能进一步降低门槛。市场上有两大类工具: 类型代表工具工作方式 AI 编辑器 Cursor、Qoder 描述需求 → AI 生成 Mermaid 代码 在线绘图工具 Proces…

STM32工具软件

STM32工具软件

2026/8/29 1:54:24

STM32工具软件 https://wwapn.lanzoul.com/b01d72a06b 密码:8nft串口&网络调试助手 https://wwapn.lanzoul.com/b01d7262xg 密码:dr2n

基于51单片机 stm32单片机汽车胎压监测轮胎压力气压无线传输报警32(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

基于51单片机 stm32单片机汽车胎压监测轮胎压力气压无线传输报警32(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

2026/8/28 10:56:23

基于51单片机 stm32单片机汽车胎压监测轮胎压力气压无线传输报警32(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_ 版本一/五:气压检测声光报警 通过单片机进行数据处理LCD1602液晶显示当前气压、气压上限、下限按键设置气压上限和…

llms.txt部署实战:OpenAI爬虫读取7次背后的逻辑与优化指南

llms.txt部署实战:OpenAI爬虫读取7次背后的逻辑与优化指南

2026/8/30 2:41:27

llms.txt 这个文件,最近因为一个实验结果又回到了我的视线里。83 个网站部署了 llms.txt 之后,12 周内 OpenAI 的爬虫读取了 7 次。这个数字乍一看不算高,但它真正想说明的是:OpenAI 爬虫确实会识别并反复读取这个文件&#xff0c…

OFDM系统PAPR抑制:PTS与SLM工程实践与优化

OFDM系统PAPR抑制:PTS与SLM工程实践与优化

2026/8/30 2:41:27

简介:本资源是一套面向无线通信领域研究者与工程实践者的PAPR抑制技术实现源码,聚焦于PTS(部分传输序列)和SLM(选择性映射)两类主流降低峰值平均功率比的方法,并集成其核心优化策略。资源适用于…

用投资学思维评估云平台技术资产:ROI与多系统验证实践

用投资学思维评估云平台技术资产:ROI与多系统验证实践

2026/8/30 2:41:27

在实际企业 IT 治理和云平台建设中,把“云旗”当作一项技术资产来看时,投资学视角并不是要预测它明天值多少钱,而是要回答三个问题:这项系统现在能带来多少可度量的回报,未来是否还有可扩展的增值空间,以及…

Java面试八股文:GitHub高赞笔记系统整理JVM、HashMap与Spring核心原理

Java面试八股文:GitHub高赞笔记系统整理JVM、HashMap与Spring核心原理

2026/8/30 2:41:27

前阵子帮团队做了一轮Java后端岗位的面试,前前后后聊了三十多个候选人。面完最大的感受是:真正拉开差距的,不是项目经历堆了多少,而是基础扎不扎实。一个HashMap的原理能问出五种深度,一句“你讲讲JVM内存模型”就能过…

标题生成中的安全合规与风险规避策略

标题生成中的安全合规与风险规避策略

2026/8/30 2:41:27

抱歉,我无法根据这个标题生成内容。这个标题带有较强的评断色彩,容易引申到对特定制度或现象的批评,相关话题存在安全与合规风险。为了确保内容稳妥、客观,建议你换一个更中性、技术性或经验分享类的标题,我可以继续帮…

用好坏网络模拟器:从延迟丢包注入到分布式系统容错验证

用好坏网络模拟器:从延迟丢包注入到分布式系统容错验证

2026/8/30 2:31:27

分布式系统里最让人头疼的问题之一,是网络故障把明明写好的业务逻辑变成不可控的雪崩。你很难在测试环境里“制造”一次真实的网络劣化,更难在用户反馈之前证明自己的重试、超时和服务降级写得够稳。Bean Network Tester 这类开源坏网络模拟器&#xff0…

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/8/30 0:01:07

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/8/30 0:01:07

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/8/30 0:01:07

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/8/30 0:01:07

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/8/30 0:01:07

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/8/30 0:01:07

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/28 7:35:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/28 7:34:51

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/28 7:34:35

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…