Google 从 Android 15 开始有意破坏所有手表、手环、通知记录类 App 的基础功能,然而我们无能为力

341 天前
 little_cup

我是通知滤盒的开发者,相信这个 App 在 V2EX 已经够有名了就不再给自己硬广了。

最近时不时收到用户反馈,通知滤盒里的部分通知内容变成了「已隐藏敏感通知内容」。 研究原来是 Android 15 开始 Google Protect 加了个所谓隐私防护措施,对可能含有 OTP 验证码的通知直接隐藏内容 https://www.theverge.com/2024/5/15/24157547/android-15-will-hide-one-time-passwords-in-notifications

这件事怎么看怎么透露一股草台班子的味道。

首先是实现方式:Google 采取的是硬编码替换字符串的实现,也即,第三方 App 收到的文本内容变成了「隐藏敏感通知内容」或 “Sensitive notification content hidden” 或其他语言。这给用户带来了极大的视觉误导,第一反应都以为是第三方服务隐藏的,而非系统所为。

同时,硬编码,而非增设某种 API 的方式,也极大地给开发者适配制造了麻烦,除了硬编码几十种语言的对应文案外,开发者没有正常的方法得知某条通知内容是否被隐藏。

然后,这直接颠覆性破坏了各类手环手表、通知历史、验证码提取类工具的使用场景。 https://www.reddit.com/r/android_beta/comments/1f9plr8/sensitive_notification_content_hidden/?rdt=58980 这样的 breaking change ,在 Google 的 Android 15 behavior change 里压根没有提及。

最后,这个功能不仅产品逻辑草台班子,程序实现同样也很草台。根据实机数据反馈,高德、抖音、微博,甚至小米商城的营销、推送都被识别为了含验证码的敏感内容。

我只能说那个啥都没你 Google 敏感。

5575 次点击
所在节点    Google
26 条回复
vsyf
339 天前
https://android.googlesource.com/platform/frameworks/base/+/refs/heads/main/services/core/java/com/android/server/notification/NotificationManagerService.java#11967

新增的 RECEIVE_SENSITIVE_NOTIFICATIONS 权限普通用户拿不到

@little_cup
下面好像还有一个洞,把自己做成匹配手表等设备的伴生应用也许可以.
little_cup
339 天前
@vsyf

非常感谢!
后面那个法子即使可以也应该过不了 Play 审核。不过看了代码,授予 appops 确实可行,至少我自己能用了…

@ISOtropy
@yanqian
执行这条 adb 命令,然后重启可以解除

appops set com.catchingnow.np RECEIVE_SENSITIVE_NOTIFICATIONS allow

如果要跑在手表上的话 com.catchingnow.np 换成你用的手表 app 的包名
Cert
332 天前
@JJYYPPCC 天呐,谢谢你分享这个资讯,我还觉得奇怪,为什么安卓的 doh3 不能更改为 opendns 及其其他 dns 。原来是被谷歌写死了,我原先还以为是我的手机出了问题……
woyaojizhu8
113 天前
@ekucn 我是刷的第三方开源 rom ,可以理解为只有 android 本身的长截图,那个长截图很难用啊,可以说基本不可用,首先无法拖动选择要截取多少长度,然后在很多 app 界面没法用,然后界面长一些也没法用。找来找去也找不到好用的第三方 app 。甚至有几个 app 是专门用来手动拼接截图的(正因为知道系统级实现很困难,所以才有人做手动拼接截图的 app 吧),实在太麻烦了
CrazyBoyFeng
26 天前
#21 虽然 RECEIVE_SENSITIVE_NOTIFICATIONS 这个权限的 protectionLevel 是 signature|role: https://android.googlesource.com/platform/frameworks/base/+/master/core/res/AndroidManifest.xml#8677
意味着除了系统应用,被授予(设备伴生)角色的应用也应获得权限。但经过我的实测仍然获取不到敏感通知。我还没有搞清楚为什么会出现这种差异。
经过我的研究 RECEIVE_SENSITIVE_NOTIFICATIONS 这个权限只有以下两种情况能够获得:
1. 预装在 /system 里且在特权白名单 /system/etc/permissions/privapp-permissions-*.xml 里声明的应用。
2. 与系统 platform key 签名一致的应用。
一个例子:预装了 windows phone link 的安卓设备可以读取验证码但是没预装的默认读取不了验证码。参考 https://www.ithome.com/0/842/770.htm
little_cup
25 天前
@CrazyBoyFeng 只有在与其他硬件保持连接的时候才可以保持豁免

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1080973

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX