25、健康与健身数据合规:Health Connect API使用规范、健康数据敏感等级、数据共享限制
健康数据,说白了就是用户身体上的“秘密”。心率、步数、睡眠、血糖……这些数据一旦泄露,后果比通讯录泄露严重得多。我当年刚接触健康类App时,觉得不就是个计步器嘛,能有多大事?直到有一次合规审查,对方直接问:“你们怎么处理用户的心率数据?有没有二次共享?”——嗯,从那以后我再也不敢小看健康合规了。
今天咱们就聊聊Android上的健康数据合规,重点围绕Health Connect API、数据敏感等级划分,以及共享限制。这部分内容,我个人建议你拿小本本记下来,因为踩坑的人实在太多了。
一、Health Connect API 是什么?
Health Connect是Google推出的统一健康数据平台。它不像以前的Google Fit那样“什么都管”,而是更像一个“数据中转站”。App通过它读写健康数据,用户可以在系统设置里统一管理权限。
说白了,它就是健康数据的“守门人”。
我在项目中遇到过这样一个场景:用户同时装了三个运动App,每个都自己存一份心率数据,结果三个App显示的心率还不一样。用户跑来投诉,说我们App不准。后来接入了Health Connect,所有App都读写同一份数据,问题就解决了。
二、健康数据的敏感等级划分
健康数据不是铁板一块。有些数据敏感度极高,比如基因信息、生殖健康数据;有些相对“温和”,比如身高、体重。GDPR和《个人信息保护法》都要求对敏感数据做分级处理。
我个人习惯把健康数据分成三个等级:
| 等级 | 数据类型举例 | 合规要求 |
|---|---|---|
| L1 极度敏感 | 基因数据、生殖健康、性传播疾病 | 必须单独获取用户明确同意,禁止任何形式的共享 |
| L2 高度敏感 | 心率、血糖、血压、睡眠数据 | 需要用户授权,共享前必须二次确认 |
| L3 一般敏感 | 步数、卡路里、身高、体重 | 常规授权即可,但不得用于非健康目的 |
你想想看,如果用户的心率数据被广告商拿去分析,那得多可怕?所以Google在Health Connect里也做了类似的等级划分。App申请读取L1数据时,系统会弹出一个特别醒目的警告框。
三、数据共享限制:能共享,但有条件
健康数据能不能共享给第三方?答案是:能,但条件非常苛刻。
根据GDPR第9条和《个人信息保护法》第28条,健康数据属于“特殊类别个人信息”,原则上禁止处理。除非满足以下条件之一:
- 用户明确同意,且同意是“具体的、知情的、不含糊的”
- 为了预防医学或职业医学目的
- 为了公共利益领域的公共卫生
- 数据主体已经自行公开了数据
在实际开发中,我建议你遵循“最小必要原则”。什么意思?就是能读步数就别读心率,能读心率就别读血糖。别贪多。
举个例子:你的App是个计步器,那就只申请读取步数权限。别顺手把睡眠数据也读了。用户一旦发现你“多读”了数据,信任感瞬间崩塌。
四、代码示例:使用 Health Connect 读取步数
下面是一个简单的示例,展示如何通过Health Connect读取用户当天的步数。注意,这里只申请了“步数”这一项权限。
// 1. 检查 Health Connect 是否可用
val healthConnectClient = HealthConnectClient.getOrCreate(context)
// 2. 构建读取请求
val readRequest = ReadRecordsRequest(
recordType = StepsRecord::class,
timeRangeFilter = TimeRangeFilter.between(
startTime = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0),
endTime = LocalDateTime.now()
)
)
// 3. 执行读取
try {
val response = healthConnectClient.readRecords(readRequest)
val totalSteps = response.records.sumOf { it.count }
// 显示步数
} catch (e: SecurityException) {
// 用户未授权,引导用户去设置页面授权
}
这段代码看起来简单,但有几个坑要注意:
- 一定要捕获
SecurityException,因为用户可能随时撤销授权 - 时间范围要精确,别读历史数据
- 步数数据属于L3等级,但如果你同时读心率,就得走L2的授权流程
五、知识体系图:健康数据合规核心逻辑
下面这张图,我画的是健康数据合规的完整流程。从数据采集到共享,每一步都有合规要求。你可以把它当作开发时的检查清单。
六、总结几个关键点
嗯,说了这么多,最后给你划几个重点:
- Health Connect 是桥梁,不是仓库。 别想着从它那里直接拿数据存到自己服务器上,除非用户明确同意。
- 敏感等级决定授权方式。 L1数据必须单独弹窗,L2数据可以合并授权,但用途必须说清楚。
- 共享限制是红线。 健康数据共享给第三方,必须让用户知道“谁、什么数据、干什么用”。
- 代码里要处理授权撤销。 用户随时可以在系统设置里关掉权限,你的App得优雅地降级,不能崩溃。
我记得有一次,一个合作方问我:“我们只想读个心率,能不能在隐私政策里写‘用于改善服务’?”我说不行,太模糊了。后来他们改成了“用于计算运动负荷,并生成个性化训练建议”,用户授权率反而提高了。你看,坦诚一点,用户反而更信任你。
健康数据合规,说到底是对用户身体的尊重。别把它当成负担,它其实是建立用户信任的最好机会。