掌中卡 隐私政策
最后更新:2026-11-10
一句话版本
掌中卡没有服务器、没有账号、代码里也没有任何联网能力。你放进去的一切都留在你的设备上。开发者看不到你的证件、你的号码,甚至看不到你在用这个应用——因为什么都不会被发送到任何地方。
这不是「我们会小心处理你的数据」的承诺,而是「我们从不接收它」的事实陈述。
我们收集什么
什么都不收集。
掌中卡不收集个人数据、不做使用分析、不上报崩溃、不使用广告标识符、不采集设备标识符。没有注册、没有登录、没有账号。
你可以怎样自己验证
这一点不需要你相信我们:
- 全部功能在断网状态下都能用。没有账号、没有登录,没有任何需要联网才能完成的操作——你可以直接打开飞行模式,或在系统设置里禁掉本应用的网络访问,所有功能照常。这是你完全不需要相信我们就能自己做完的验证。
- 应用没有打包任何分析、崩溃上报、广告或后端 SDK。完整的第三方依赖清单列在下面。
- 关于 Android 的
INTERNET权限:安装包里确实带有这一条,但它不是掌中卡声明的。它由条码扫描所依赖的库(ML Kit 的一个数据传输组件)在打包时自动合并进来,掌中卡没有使用它——我们自己的AndroidManifest.xml只声明相机与通知两项权限,应用代码里不存在任何网络调用。我们把它写在这里而不是含糊带过:一份声称「没有这个权限」而安装包里明明有的隐私政策,比一份说清来源的更不值得信任。
留在你设备上的东西
你添加的一切:
| 内容 | 存放位置 | 保护方式 |
|---|---|---|
| 证件照片、文件页,以及你原样存进来的 PDF(护照信息页、身份证、合同、保单等) | 应用沙盒内的私有目录 | AES-256-GCM 加密。密钥在你的设备上生成,存放于 iOS 钥匙串 / 由 Android Keystore 保护的存储,在支持的设备上由硬件保护 |
| 卡号、证件号等号码;护照上的姓名、国籍、出生日期、性别;备注 | 应用沙盒内的本地 SQLite 数据库 | AES-256-GCM 加密后才写入,用的是和照片同一把设备密钥 |
| 条目名称、标签、卡包名(以及卡包的图标、颜色、顺序和里面有哪些卡)、家人的名字、有效期 | 应用沙盒内的本地 SQLite 数据库 | 以明文存储,不额外加密——列表、搜索和到期提醒要用到它们;依赖应用沙盒隔离与你的设备锁(生物识别 / PIN)保护 |
| 你的应用锁密码 | iOS 钥匙串 / 由 Android Keystore 保护的存储 | 只存 PBKDF2-HMAC-SHA256 哈希与随机盐,绝不存密码本身 |
| 你的主题选择 | 本地应用偏好 | 非个人数据 |
| 别的应用通过分享面板递进来、你还没归档的文件 | 掌中卡与它的分享扩展共用的容器里的
Library/Caches/incoming/ |
不加密——它这时候还不是掌中卡里的记录。这个位置刻意选在不进 iCloud 与 iTunes 备份的目录;见下文「从别的应用分享进来的文件」 |
设备密钥只在这台设备上,不会随备份或任何别的途径离开它;备份文件另用你设的口令加密(见下文「备份」)。同一张清单在应用里也看得到:设置 → 安全 → 加密了什么。
PDF 和照片一样加密。「文件」类型可以直接存进一份 PDF,不转成图片;它和照片用同一把设备密钥、同一套加密方式。如果这份 PDF 自己带着打开口令,掌中卡不保存那个口令——它只在你看着这份文件的这段时间里留在内存里,应用一上锁或一退出就没了,下次要再输一次。这是刻意的:一个替你记住保单口令的地方,就是一个值得去偷的地方。
在掌中卡里拍的照片绝不会写入系统相册。 内置相机直接把照片写进加密存储,相机插件的临时文件随后立即删除。唯一能进相册的是你自己做出来的复印件,而且只有在你于分享面板上点「存储图像」时——见下面「复印件会离开加密存储」。
照片要以未加密的原样离开这台设备,只有一条路:你自己点「分享」。 看照片时屏上有一个「分享这张照片」,点了就把正看着的那一张交给系统分享面板——AirDrop 给自己的 Mac、作为邮件附件、发给跟你要的那个人。只在你点的那一下发生,也只给那一张。(照片还会跟着加密备份走,你做的复印件则是照片渲出来、压了水印的另一份文件——这两件事下面各有一节。)掌中卡把这个面板上的「存储图像」拿掉了,所以它不提供「一键把原图存进相册」这条路;面板上其余那些去处属于系统和你自己装的 app,它们拿这个文件做什么,是你和它们之间的事。
我们申请的权限,以及为什么
| 权限 | 用途 | 拒绝会怎样 |
|---|---|---|
| 相机 | 拍证件信息页;扫会员卡条码 | 所有内容仍可手动输入 |
| Face ID / Touch ID / 指纹 | 解锁应用 | 改用密码解锁 |
| 通知 | 在证件到期前提醒你 | 收不到提醒;打开应用时首页仍会警告 |
除此之外,掌中卡不申请通讯录、定位、麦克风,不申请网络权限,也不申请精确闹钟权限。
相册:掌中卡自己的代码一次都没调用过相册接口。 但你在 iPhone 的设置或 App Store 页面里会看到两条「照片」说明,含义不同,都写在这里:
- 「添加到相册」——只有一种情形用得到:你做好一份复印件,在分享面板上点了「存储图像」。那一下由你发起、由 iOS 代你确认,存进去的只有那一份带水印的复印件。掌中卡自己绝不会这样写入原图——你分享原图时,那个面板上的「存储图像」被拿掉了。
- 「访问相册」——这一条从不会被触发。它必须存在,是因为掌中卡用来选照片的组件里也带着申请完整相册访问的代码,而苹果会拒收「二进制里引用了这类代码却没有用途说明」的应用。掌中卡从不调用那部分代码;这条说明讲的只是下面那个系统选择器。
从相册选一张已有的照片。 想用手机里已有的照片添加证件时,掌中卡打开的是系统照片选择器。选择器在掌中卡之外运行:你在那里浏览相册,掌中卡只收到你点选的那几张——看不到相册里的其他内容,也不会请你授予相册权限。选进来的照片会去掉位置等元数据,再和应用内拍的照片一样加密保存。
有效期提醒由你设备自身的操作系统排期,全程不经过任何服务器。它的文案刻意只含件数与天数——绝不含证件的名称、号码或归属人。它会出现在你的锁屏上,而 iOS 不给应用任何隐藏预览的手段,所以唯一可靠的保护就是让文案里没有值得隐藏的东西。
生物识别的比对完全由你的操作系统完成。掌中卡只收到「是」或「否」,从不接触你的面容或指纹数据。
出示屏能拦住什么、拦不住什么
出示证件时,掌中卡会要求 Android 阻止该屏幕的截图与录屏,并且只在系统确认之后才声称这一点。iOS 不提供同等能力:在 iPhone 上,截屏拦不住;但录屏和投屏(含 AirPlay)时,出示屏会用不透明的提示盖住卡面。任务切换器遮挡在两个平台都仍然生效;开了应用锁的话,应用锁也是。
保护正常工作时,掌中卡在屏上什么都不说——一个永远亮着的徽标是噪声。它只在承诺的保护未生效时警告你,因为那才是你可能采取行动的情形。
复印件会离开加密存储——这是刻意的
复印件是掌中卡产出的唯一不加密的东西:它就是一个普通的 PNG 或 PDF,因为它的用途本来就是交给别人或上传。
- 你决定它去哪儿。做好之后有两个动作:存为(存到你指定的位置)和分享(交给系统分享面板)。两个都要你当场点一下,掌中卡自己不会把它发到任何地方。
- 分享面板里可以选「存储图像」,把这份复印件存进你的相册。 那是你的选择,不是掌中卡做的事——它只是把这个文件交给了系统。掌中卡自己绝不会把原图放进相册:你分享原图时(见本节末尾那一段),那个面板上的「存储图像」被拿掉了,而且掌中卡没有、也从不请求往相册里写原图的权限(见上面「在掌中卡里拍的照片绝不会写入系统相册」)。
- 分享时掌中卡会在手机的临时目录里短暂放一份,面板一关就删掉;下次启动还会再扫一遍,以防上次没删干净。
- 递出去的那份文件名不带条目标题。 它叫「复印件-日期」,不叫「妈妈的护照-日期」——那个名字是你给自己起的,没有理由跟着附件进到对方的聊天记录里。你自己「存为」时仍然用条目标题。
- 一旦存出去,那个文件就在掌中卡的保护之外了。你手机自身的备份、云同步,或任何有文件访问权的东西都能读到它。
- 水印正是为此存在。写明这份复印件的用途与制作日期,才能阻止一张流出的纸被挪用。填写用途是可选的,而它是你能为一份复印件做的最有用的一件事。
- 掌中卡不记录你做过哪些复印件。
分享照片本身走的是同一套,只有两处不同。 能递出去的不止复印件:看照片时你可以把那张照片原样分享出去。上面每一条都照样成立——要你当场点一下,掌中卡在临时目录里短暂放一份不加密的文件,交给系统面板,面板一关就删掉,文件名叫「照片-日期」而不是你的条目标题。两处不同:那份文件没有水印,因为它就是你的照片,不是一张做来递出去的纸;以及那个面板上的「存储图像」被拿掉了,所以掌中卡不提供「一键把原图存进相册」这条路。一旦递出去,它就和复印件一样,在掌中卡的保护之外了。
从别的应用分享进来的文件
掌中卡在系统分享面板里登记了一个入口:在微信、邮件或「文件」里看到一份保单,可以直接分享给掌中卡。这条路上有几件事值得你知道:
- 刚分享进来的文件还没加密。 它这时候还不是掌中卡里的一条记录——要等你下次打开掌中卡、在弹出的表单里填好并保存,它才会被加密收进金库,原件随即删除。
- 那个落脚处刻意选在不进备份的位置。
它在掌中卡与这个扩展共用的容器里的
Library/Caches/,而不是Documents/——后者会进 iCloud 与 iTunes 备份。一份还没加密的保单躺进备份,会比它好好存在掌中卡里传得更远。代价是:系统在磁盘吃紧时可以清掉这个目录,所以「分享了、但一直没打开掌中卡」的文件有可能消失。真丢了,再分享一次就是。 - 扩展打不开掌中卡,这是 iOS 的限制,不是偷懒。 所以它只能当场跟你说一声「收到了」,填写的表单要等你下次自己打开掌中卡时才弹出来。
- 「抹除全部数据」会连这些还没归档的文件一起清掉。 不清的话,那份明文会活过抹除、在下次启动时弹给下一个用这台手机的人。
- 这个扩展和掌中卡本体一样没有联网能力,不会把文件发往任何地方。
备份——数据唯一会离开应用的地方
掌中卡可以导出加密备份文件。这只在你主动要求时发生。有三件事需要你清楚:
- 口令由你决定。 文件用从它派生的密钥加密(PBKDF2-HMAC-SHA256,新备份 60 万轮,再走 AES-256-GCM;轮数记在文件头里,早先用较少轮数导出的备份照样能打开)。掌中卡不保存这个口令,也无法找回。口令丢了,这份备份就永远打不开——你打不开,我们也打不开。
- 文件去哪由你决定。 你在系统文件选择器里选目标位置。如果你选了云端目录(iCloud Drive、Google Drive、Dropbox),文件此后受那家服务商的隐私政策约束,而不是本政策。文件本身仍是加密的。
- 备份里包含你的证件照片与 PDF。 这正是它的意义——不含它们的备份无法恢复你的证件。请把这个文件当作敏感文件对待。(还没归档的分享文件不在备份里:它们还不是掌中卡里的记录。)
忘记密码
忘记密码没有找回途径,因为没有任何服务器保存副本。应用提供「24 小时后清除全部本地数据」的重置,在这 24 小时内任何时候输入正确密码即可取消。这个延迟的存在,是为了让拿到你手机的人无法立即抹掉它。
儿童
掌中卡是一个个人工具,没有账号、没有社交功能、没有消息、不采集数据。它并非面向儿童设计;而由于它什么都不收集,它也就不会从儿童处收集任何东西。
第三方组件
掌中卡基于 Flutter 构建。下面是它的全部直接依赖:
provider · sqflite · path ·
path_provider · flutter_slidable ·
barcode_widget · uuid ·
shared_preferences · file_picker ·
image_picker · local_auth ·
cryptography · flutter_secure_storage ·
camera · mobile_scanner ·
screen_brightness ·
flutter_local_notifications · timezone ·
archive · pdf · pdfrx ·
cupertino_icons · characters ·
flutter_localizations · intl
这些包自己还会带进一些更底层的包。有一条值得单独说:pdfrx(显示
PDF 用的)带进了 url_launcher,它的用途是打开 PDF
里的链接——掌中卡把 PDF
阅读器的链接功能整个关掉了,所以它在本应用里不会被用到。
整棵依赖树里没有任何分析、广告、归因或后端 SDK,也没有任何一个会传输你的数据。这一条你不必相信我们:上面「你可以怎样自己验证」里那个断网测试,比任何清单都更能说明问题。
你的权利
由于我们不持有关于你的任何数据,也就不存在需要我们代你披露、导出、更正或删除的东西。这些数据一直都在你手里,删除应用即删除它们。
如果你受 GDPR、CCPA 或类似法律保护:我们不是你个人数据的控制者或处理者,因为我们从未接收它。
政策变更
如果未来某个版本的掌中卡改变了「什么会离开你的设备」,本政策会在那个版本发布之前更新,并在应用的更新说明里写明这项改动。我们不会在一个以「没有数据采集」为卖点的应用里,悄悄加上数据采集。
联系方式
关于本政策,或应用里的任何问题:stephen.li@wdbible.org