|
|
本帖最后由 黄金 于 2026-8-15 06:43 编辑
我前几天在冻结后台运行的系统应用
结果今天突然发现流体云不行了(当时大概就是这样的)把apk给deepseek一顿分析,告诉我是com.oplus.pantanal.ums被冻结导致的
## 分析结论:流体云“全上不了云”的根因
### 1. 流体云在代码里叫什么
在 `NotificationCenter.apk`(`com.oplus.notificationmanager`,OPPO/一加通知管理)里,流体云 = **FluidSeeding(流体播种)**,设置入口是你抓的 `com.oplus.notificationmanager.fluidseedingsettings.activity.FluidSeedingSettingMainActivity`。
### 2. 流体云的数据全部来自 UMS 这一个“上游”
设置页的数据链路是:
```
FluidSeedingSettingMainActivity
→ SeedingSettingMainFragment
→ ConfigServiceViewModel / ConfigServiceModel
→ SeedingDataController
→ ContentResolver.call() / query()
→ com.oplus.pantanal.ums 的 ContentProvider(UMS 泛在服务)
```
`SeedingDataController`/`Constants` 里写死了所有 URI,**系统服务和第三方服务的数据源是同一个包 `com.oplus.pantanal.ums`**:
| 数据 | URI | 调用 |
|---|---|---|
| 系统服务(时钟等) | `content://com.oplus.pantanal.ums.statictis` | `call(..., "queryFluidCloud", ...)` |
| 第三方服务(音乐/12306) | `content://com.oplus.pantanal.ums.settings` | `query_brand_settings`、`query_brand_icon`、`query_fluid_cloud_setting` 等 |
| 卡片/概览授权 | `content://com.oplus.pantanal.ums.statictis/card_overview` | 查询授权 |
也就是说,**本 APK 只是“查询方”,它自己不产生任何服务列表**。音乐、12306、时钟这些“上云”条目全要从 UMS 拉。
### 3. 为什么冻结 UMS 后“什么都没有”
- **跨进程查询直接失败**:`ContentResolver.call("content://com.oplus.pantanal.ums.statictis", ...)` 找不到 Provider → 返回 null → `querySystemServices()` 打日志 `"querySystemServices failed, null bundle."` 后直接 return,系统服务列表为空;第三方服务同理 → 音乐、12306、时钟全部消失。
- **代码里有“未安装”硬判**:`FluidSeedUtils.isSupportBreenoSuggest()` 第一行就是 `UserUtil.isPkgInstalled(context, "com.oplus.pantanal.ums")`,打日志 `"isSupportBreenoSuggest: ums has not installed"` 直接 return false。
- **冻结 = 未安装**:`UserUtil.isPkgInstalled()` 用的是 `pm.getApplicationInfo(pkg, 0)`(flags=0,不带 `MATCH_DISABLED`),**被冻结的应用在这种调用下会抛 `NameNotFoundException`,被当成“没装”**——所以你解冻后一切恢复正常。
### 4. 顺带提醒(防止以后踩坑)
流体云还依赖几个外部系统应用,只是影响面不同:
- `com.coloros.assistantscreen`(Breeno 助手屏)— `isSupportBreenoSuggest()` 还校验它的 intent 和 metadata `com.oplus.advice.support_entrance_control`,冻结会丢“Breeno 建议”入口
- `com.android.systemui` — 校验 metadata `com.oplus.seedling.support_entrance_control`
- `com.oplus.aod` — 流体云在 AOD 上的显示(`Setting_AodSwitchEnable`)
- `com.oplus.metis` / `com.coloros.sceneservice` — 强化服务/场景服务开关
- `com.oplus.exsystemservice` — AI 流体云设置(`AIFluidCloud...PersonalInfoProtectionConfirmActivity`)
其中 `com.oplus.pantanal.ums` 是“一票否决”的关键,它被冻结就会像你看到的那样全上不了云。解冻后建议到「设置 → 通知与状态栏 → 流体云」刷新一下列表确认恢复。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|