GKLBB

当你经历了暴风雨,你也就成为了暴风雨

导航

软件研发 --- 我的工作 之 安卓云控

https://gitee.com/null_465_7266/ccdroid

 

 

各方案总结

方案一:MDM + Device Owner(基础方案)

原理:手机不刷机,MDM APP 通过 Android 官方 DevicePolicyManager API 注册为"设备所有者",获得企业级管理权限。

能实现:

  • APP 远程安装/卸载
  • APP 黑白名单(禁止打开指定应用)
  • Kiosk 模式(锁定桌面,只显示指定APP)
  • WiFi/VPN/蓝牙/摄像头/截图等系统设置管控
  • 密码策略强制

短板:恢复出厂设置可以通过系统设置层面限制,但通过 Recovery 模式双清仍可能被绕过,非100%可靠。

适用:免费、快速验证方案,门槛最低。


方案二:厂商企业管理接口(荣耀EMM/华为EMM/三星Knox等)

原理:在 Device Owner 基础上,调用手机厂商提供的企业级私有API,获得比原生Android更高的系统权限。

能实现:

  • 静默安装(无需用户确认)
  • 禁止用户卸载APP
  • 更深度的系统配置权限
  • 更强的应用管控能力

优势:权限高于普通MDM,是目前商用最成熟的方案,各大厂商都有专门的企业服务)。


方案三:Android Enterprise Zero-touch(零接触注册)

原理:设备出厂前与企业账号绑定,用户开箱首次开机即自动完成MDM配置,无需人工干预。

特点:

  • 适合大批量采购场景(类似企业电脑"加域")
  • 用户无感知,自动纳管
  • 需要设备支持 Zero-touch 认证

适用:几千台以上规模化部署的首选注册方式。


方案四:厂商预装MDM Agent(不刷ROM,厂家代工预装)

原理:采购时要求厂商在系统层(/system/app)预置你的管理APP,并授予系统级权限,而不是你自己刷机。

优势:

  • 效果接近定制ROM,但不需要自己维护ROM
  • 权限更高、更稳固(防止用户删除/禁用管控APP)
  • 是最接近"新大陆工业终端"效果的量产方案

适用:有一定采购量(通常数千台起)、需要工业级管控强度的项目。


方案五:双空间/工作资料模式(Work Profile)

原理:利用 Android Enterprise 的"个人空间 + 企业工作空间"隔离机制,企业只管理工作区内的应用和数据。

优势:兼顾员工隐私(BYOD场景友好)

短板:

  • 无法控制个人空间的应用和设置
  • 无法实现禁止恢复出厂等强管控
  • 管控力度最弱,不适合完全受控的工业终端场景

方案六:应用沙箱/自建Launcher锁定

原理:自己开发一个"企业桌面APP"作为入口,通过Launcher层面限制用户只能打开指定应用,隐藏其他APP。

优势:开发简单,纯应用层实现,无需任何特殊权限申请

短板:

  • 安全性最低,用户可通过系统设置/最近任务等绕过限制
  • 无法真正禁止安装/卸载其他应用
  • 无法管控系统设置和恢复出厂

核心结论

维度推荐方案
验证期/低成本 方案一(MDM+Device Owner)
正式商用/量大 方案二 + 方案三(厂商EMM + Zero-touch)
工业终端级强管控 方案四(厂商预装Agent)
BYOD/个人与企业共存 方案五(双空间)
不推荐单独使用 方案六(沙箱锁定,管控力太弱)

最终建议的商用组合路径:

text
采购支持企业管理的手机(荣耀/三星等)
        +
厂商EMM API(获取高权限)
        +
Device Owner(标准企业管理协议)
        +
云端UEM管理平台(统一下发策略)

这套组合不需要刷机,即可实现 APP管控、设置锁定、防止用户篡改 等绝大部分企业级管控需求;"禁止恢复出厂"无法做到100%绝对,但可以做到绝大多数用户无法触及的程度。真正要做到类似新大陆那种"刷机级"终端效果,核心在于方案四(厂商预装),而不是自己折腾定制ROM。

 
 
# 荣耀 MDM 服务能力分析与"云端集中管控"落地方案

> 数据来源:荣耀开发者服务平台 MDM 服务文档(kitId=11015)全部 35 个页面:开发指南 11 篇 + API 参考 22 篇(含 21 个管理类、共 432 个接口)+ 示例/SDK 页面。原始 HTML 文档全部抓取存档于 `.temp/honor-mdm/docs/`,本报告所有 API 引用均出自其中。

---

## 一句话结论

**你要的 4 件事——云端下发指定 App、禁止指定 App 打开、设置预配置且禁止用户改、禁止恢复出厂——荣耀 MDM 全部有现成接口,全部可实现。**

但有一个关键认知必须先建立:**荣耀 MDM 是"设备端能力 SDK",不是现成的云端管控平台**。荣耀把 432 个系统级管控接口开放给你,你需要"自研一个企业管控 App(装手机上)+ 自建一个云端管理后台",两边拼起来才是完整的"云端集中管控"。荣耀只管设备端授权,云端通道和策略逻辑全由你实现。

---

## 二、荣耀 MDM 是什么(大白话)

- **是什么**:一套打包进 `magic-android.jar` 的系统级 API,让普通企业 App 拿到接近系统管理员的权限(改设置、装卸应用、禁功能)。
- **原理**:基于 Android 原生的 DeviceAdmin(设备管理器)/ DevicePolicyManager / Device Owner 机制扩展,荣耀在其上叠了 432 个自有接口。
- **硬性门槛**:接口全是敏感权限,**必须申请荣耀 MDM 证书**(打包进 APK 的 META-INF/HONOR.CER),资质和场景都要审核。
- **适用范围**:仅荣耀/华为系拆分后的荣耀手机、平板、智慧屏(Magic UI 4.0+/MagicOS 7.0+),仅中国大陆。
- **设备无关性**:SDK 集成后,非荣耀设备上是空实现(接口无效),App 不会崩。

### 工作模型

```
┌─────────────┐   你的私有通道(推送/长连接/轮询)   ┌──────────────────┐
│  你的云端后台 │ ────────────────────────────→ │ 企业管控App(荣耀手机)│
│  策略/配置/   │ ←──────────────────────────── │  调用 MDM 432 个API │
│  应用分发仓库  │         上报状态/结果           │  在设备上真正生效    │
└─────────────┘                                └──────────────────┘
```

云端 → 设备端怎么把指令送过去?**MDM Kit 本身不提供云通道**,文档明确的三种落地做法:
1. 设备端 App 监听开机广播 + 定时心跳,开机/定期向云端拉取策略(FAQ Q15:可配合 `setSuperTrustListForHwSystemManger` 可信列表实现开机自启);
2. 接荣耀推送服务(Push Kit)做指令触发,收到推送后调用 MDM API;
3. 自建长连接(WebSocket/MQTT)实时下发。

策略下发后由 `DeviceAdminReceiver.onEnabled()` 时刻起才能调用 MDM 接口(未激活调用会抛 SecurityException)。

---

## 三、能力全景:21 个管理类、432 个接口

| 管理类 | 接口数 | 管什么(大白话) |
|---|---|---|
| DeviceRestrictionManager | 105 | 各种"禁用/启用"开关:WiFi、蓝牙、热点、NFC、短信、通话、录屏、麦克风、USB、ADB、截屏、SD卡、系统更新、谷歌账户、HOME键/返回键/任务键、剪贴板、多窗口…… |
| DeviceSettingsManager | 61 | 设置管理:禁恢复出厂、禁改时间日期、禁开发者选项、禁"安装外部来源应用"、设字体大小、设默认输入法、开关 NFC/定位、隐藏多用户入口…… |
| DeviceControlManager | 37 | 设备控制:开关机、重启、截屏、设系统时间、设系统语言、**强制激活设备管理器**、**激活 Device Owner**、**设置管控模式**、**定制设置菜单**、系统水印、设默认桌面 |
| DeviceWifiPolicyManager | 33 | WiFi 管控:企业 WiFi 下发、热点黑白名单、最低安全等级、禁手动添加网络、禁自动连接 |
| DeviceApplicationManager | 22 | 应用管控:**应用运行黑名单**、**允许运行白名单**、独占应用、杀进程、安装黑名单、禁止关闭动态权限 |
| DeviceEmailManager | 23 | 邮件:静默配置邮箱/Exchange 账户、禁增删账户、强制 SMIME 加密 |
| DeviceNetworkManager | 26 | 网络:增删改 APN、网卡配置、URL 黑白名单(黑名单还能分域名/IP)、浏览器网址管控、查上网历史 |
| DeviceHwSystemManager | 23 | 系统信任列表:可信应用列表、企业应用联网白名单、禁止关闭自启动/通知/联网权限的应用名单 |
| DevicePackageManager | 16 | 应用包管理:**静默安装/卸载**、安装源限制、**禁止卸载名单**、安装白名单 |
| DeviceBluetoothManager | 21 | 蓝牙:设备黑白名单、禁配对、禁文件传输、禁外设通话 |
| DevicePhoneManager | 19 | 电话:通话黑白名单、通话/短信次数限制、双卡管控、飞行模式 |
| DeviceTelephonyManager | 13 | SIM:禁卡槽2、SIM PIN 码管理、短信限额 |
| DeviceVpnManager | 10 | VPN:静默下发 VPN 配置、只允许安全 VPN |
| DevicePasswordManager | 10 | 密码策略:锁屏密码复杂度限制、密码更改宽限期、禁滑动锁屏 |
| DeviceCameraManager | 4 | 禁录像、禁闪光灯 |
| 其他(防火墙/存储/定位/红外/P2P) | 8 | 全局代理、SD 卡写入限制、被动定位、红外、WiFi 直连 |

**常见配套"套路":写值接口(setXxx)+ 查询接口(isXxx/getXxx)成对出现,黑名单 add/remove/get 成套。**

---

## 四、你的 4 个需求逐一分析

### 需求 1:云端集中管控,下发指定 App ✅ 完全可实现

| 接口 | 作用 | 关键限制 |
|---|---|---|
| `installPackage(admin, packagePath)` | **静默安装**,无弹窗用户无感知 | 路径必须用 FileProvider 格式(仅应用数据目录),需 grantUriPermission 授权系统进程读;权限 `MDM_APP_MANAGEMENT`;Magic UI 4.0+ |
| `uninstallPackage(admin, pkg, keepData)` | 静默卸载(可选保留数据) | 同上权限 |
| 安装结果广播 | 监听 `com.hihonor.intent.action.InstallMdmPackage`,Bundle 里有 packageName + installStatus(0成功/1不在白名单/4签名不匹配/5文件损坏) | — |
| `addInstallPackageTrustList(admin, pkgs)` | **只允许白名单内的 App 被安装**(含用户手动安装)| 上限累计 1000 个,不能含系统应用 |
| `addInstallPackageBlockList(admin, pkgs)` | 安装黑名单 | — |
| `disableInstallSource(admin, trustList)` | 锁死安装来源:只有名单里的应用市场能装东西,**SD卡/adb 安装全部失效** | trustList ≤200,不能含系统应用 |
| `addDisallowedUninstallPackages(admin, pkgs)` | **禁止指定 App 被卸载**(防止用户卸载你的业务 App) | ≤200,不能含系统应用 |

**云端下发 App 的完整链路**:
```
云端后台发布App任务 → 设备端App拉取任务 → 把APK从自有服务器下载到应用私有目录
→ installPackage(admin, FileProvider路径) → 收 InstallMdmPackage 广播 → 上报云端"安装成功"
```
这就是企业应用商店的底层实现(荣耀官网也把"应用分发"列为 MDM 场景之一)。

### 需求 2:控制哪些 App 禁止打开 ✅ 完全可实现

| 接口 | 管控模式 | 说明 |
|---|---|---|
| `addDisallowedRunningApp(admin, pkgs)` | **黑名单模式**(默认推荐) | 名单内 App **不能打开,正在运行的也会被立即停止**。上限 1000,不能含系统应用 |
| `removeDisallowedRunningApp` / `getDisallowedRunningApp` | 名单增删查 | 云端随时可调整名单 |
| `setTaskLockAppList(admin, pkgs)` | **白名单模式**(只能开名单内的) | "只允许这些 App 启动",**开机自动拉起名单第一个 App**——典型 Kiosk/教学场景。设为空/null 即解除 |
| `addSingleApp(admin, pkg)` | 单应用锁(kiosk) | 独占桌面、返回键退不出;官方建议优先用 setTaskLockAppList 替代 |
| `killApplicationProcess(admin, pkg)` | 精确杀进程 | 可对单个 App 立即停止 |

黑名单 vs 白名单怎么选:
- 管理**员工办公机** → 用黑名单(禁游戏、抖音、钱包类 App,其他放开);
- 管理**教学机/展机/执法记录仪** → 用白名单(只能开学习 App,其余全禁),更彻底。
- 注意:setTaskLockAppList 与 addSingleApp 不能同时用(冲突)。

### 需求 3:设置预配置自动下发 + 禁止用户自己改 ✅ 可实现(要打"组合拳")

这是最需要讲清楚的一条:"**把配置改好**"和"**不让用户再改回去**"是两类接口,得配套用。

**第一类:把配置直接写好(静默下发)**
- `setFontSize(admin, size)` 设字体大小
- `setDefaultInputMethod(admin, component, forcemode)` 设默认输入法,**forcemode=true 时用户不可手动改**
- `setSystemLanguage(admin, locale)` 改系统语言(DeviceControlManager)
- `setSysTime(admin, millis)` 设系统时间
- `turnOnEyeComfort` 护眼模式、`setNFCStatus` 开关 NFC、`setForceLocationServiceOn(admin, true)` 强制定位开(**用户不能改**)
- `turnOnWifi / turnOnBluetooth / turnOnWifiTethering` 等静默开关 WiFi/蓝牙/热点
- `setWifiProfile(admin, WifiConfiguration)` **下发企业 WiFi 配置**(含密码,用户直接连)
- `addApn / setPreferApn` 下发 APN;`setVpnProfile` 下发 VPN;`installCertificateWithType` 下发证书
- `setDefaultLauncher / setDefaultBrowserApplication / setDefaultDialerApplication / setDefaultSmsApplication` 设默认桌面/浏览器/电话/短信
- `configEmailAccount / configExchangeAccount` 静默配好企业邮箱账户

**第二类:不让用户改(三档力度)**

| 力度 | 接口 | 效果 |
|---|---|---|
| 直接禁用整个"设置"App | `setSettingsApplicationDisabled(admin, true)` | 用户连设置都打不开(最狠,一般不建议全禁) |
| **隐藏指定设置菜单(推荐)** | `setCustomSettingsMenu(admin, menusToDelete)` | 可屏蔽 50+ 个菜单项:WiFi、蓝牙、移动网络、应用、存储、安全和隐私、**系统和更新、重置、开发者选项所在项**……精确到二级/三级菜单 |
| 单项禁用开关(105+ 个) | `setTimeAndDateSetDisabled`(禁改时间,且强制"自动设置"开)、`setDevelopmentOptionDisabled`(禁开发者选项)、`setWIFIeditDisabled`(禁编辑 WiFi)、`setLocationServiceDisabled`、`setScreenOffDisabled`、`setUnknownSourceAppInstallDisabled`…… | 一次锁一项 |

**重要坑**:不是所有"写值"接口都自带"锁定"能力。文档明确举例:`setFontSize` 设置后**用户仍可在设置里改字体大小**——要真正锁死,须配合 `setCustomSettingsMenu` 隐藏"显示和亮度→字体与显示大小"(参数 `display_font_size`)。落地口诀:**先 setValue 再锁对应的菜单入口,两步缺一不可**。

**"预配置自动下发"的触发时机**:App 开机自启(BOOT_COMPLETED + 可信列表 + 悬浮窗权限,FAQ Q15)→ 向云端拉取策略 → 逐条 setValue + setDisabled → 完成开机即达标的统一基线。

### 需求 4:不能恢复出厂设置 ✅ 完全可实现(含防绕过组合)

核心接口:

> **`setRestoreFactoryDisabled(admin, true)`**
> 官方文档原话:"禁用/启用系统的恢复出厂功能。如果禁用,则用户不可进行'恢复出厂设置'的操作。"
> 权限:`MDM_SETTINGS_RESTRICTION`;支持手机/平板/智慧屏,Magic UI 4.0 及以上。

只用这一个接口不够稳(恢复出厂还有旁路),**生产环境应上"组合拳"**:

| 防线 | 接口 | 防什么 |
|---|---|---|
| 主防线 | `setRestoreFactoryDisabled(admin, true)` | 设置里的恢复出厂直接不可操作 |
| 隐藏入口 | `setCustomSettingsMenu` 传 `reset_settings`(隐藏"系统和更新→重置")、`system_updates` | 连菜单都不给看 |
| 断 adb 旁路 | `setAdbDisabled(admin, true)` | adb 发 wipe/recovery 指令 |
| 断刷机旁路 | `setSdCardUpdateDisabled(admin, true)` | SD 卡升级包恢复;`setSdCardUpdateDisabled`+`setSystemUpdateDisabled` 锁系统更新 |
| 断恢复模式旁路 | `setSafeModeDisabled(admin, true)` | 安全模式绕过管控 |
| 兜底 | `setControlMode(admin, 1)` 设为"管控设备模式",官方文档:**"该模式设备恢复出厂不会清除"** | 万一设备真被恢复出厂(如售后),重新开机仍处于管控模式 |
| 防解除管控 | `setForcedActiveDeviceAdmin(admin, context)` 强制激活:激活界面只有"激活"按钮、无取消;已激活后设置里的"解除激活"灰掉 | 防用户自行解除设备管理器 |
| 防卸载管控 App | `addDisallowedUninstallPackages(admin, [你的包名])` + 设备管理器激活态本身就不能直接卸载 | 防卸载 MDM App 逃逸 |

进阶加固:激活为 **Device Owner**(`setDeviceOwnerApp(admin, ownerName)`,需先强制激活、且设备无子用户/无登录账户/未激活过),即可调用 Android 原生只有 Device Owner 能用的接口(如 `setPermissionGrantState` 静默授予权限、`setUserRestriction`)。Device Owner 状态下用户更难逃逸,但**激活条件苛刻**,适合开箱部署(设备初始化阶段就完成激活)。

---

## 五、整体落地方案(怎么干)

### 5.1 系统组成

1. **云端管理后台(自建)**
   - 设备台账:SN/IMEI、绑定关系、在线状态
   - 策略中心:黑白名单、设置基线、恢复出厂禁用等策略版本化管理
   - 应用仓库:APK 私有分发 + 版本灰度
   - 下发通道:推送触发/心跳轮询/长连接,任选其一
2. **设备端企业管控 App(自研,集成 magic-android.jar)**
   - 首次开机强制激活 → 拉取基线策略 → 落地执行 → 回执
   - 常驻监听云端指令(开机广播 + 定时心跳)
3. **荣耀侧**:证书审核发放 + SDK + 商店分发(或私有安装)

### 5.2 一次典型的部署流程

```
① 员工领到新荣耀手机 → 装上你的管控App(预装/应用市场/一次性安装器)
② App 首次启动弹"权限使用声明"(荣耀强制要求,内容覆盖所用能力)
③ setForcedActiveDeviceAdmin → 用户点击激活(唯一按钮,无法取消)
④ (可选)setDeviceOwnerApp 激活 Device Owner,做最深度管控
⑤ App 向云端注册(上报 SN/IMEI)→ 云端下发"企业基线策略包"
⑥ App 逐条执行:
   - setRestoreFactoryDisabled(admin, true)          // 禁恢复出厂
   - setCustomSettingsMenu(admin, [reset_settings, system_updates, system_navigation, apps_management...])
   - installPackage(admin, "content://...(办公APK)")  // 下发办公App
   - addDisallowedRunningApp(admin, [游戏包名...])    // 应用黑名单
   - setWifiProfile / setDefaultInputMethod(force=true) / setFontSize... // 配置基线
   - addDisallowedUninstallPackages(admin, [办公App包名]) // 防卸载
⑦ 回执执行结果,云端标记录入审计
```

### 5.3 代码骨架(来自官方开发指南 + FAQ 的标准用法)

```java
// 0) App 内实现 DeviceAdminReceiver 组件(Android 原生机制)
DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName admin = new ComponentName(this, SampleDeviceReceiver.class);

// 1) 强制激活(激活页只有"激活"按钮)
new DeviceControlManager().setForcedActiveDeviceAdmin(admin, activityContext);
// 用户点击激活后,onEnabled() 回调里才能调 MDM 接口

// 2) 禁止恢复出厂
new DeviceSettingsManager().setRestoreFactoryDisabled(admin, true);

// 3) 云端下发应用:先把 APK 下载到私有目录,再静默安装
String apkUri = FileProvider.getUriForFile(ctx, "your.provider",
        new File(ctx.getCacheDir(), "oa.apk")).toString();
ctx.grantUriPermission("android", Uri.parse(apkUri), Intent.FLAG_GRANT_READ_URI_PERMISSION);
new DevicePackageManager().installPackage(admin, apkUri);
// 安装结果在广播 com.hihonor.intent.action.InstallMdmPackage 里收

// 4) 应用黑名单(禁打开,正在运行的也会被停掉)
new DeviceApplicationManager().addDisallowedRunningApp(admin, Arrays.asList(
        "com.tencent.tmgp.sgame", "com.ss.android.ugc.aweme"));

// 5) 隐藏敏感设置菜单
new DeviceControlManager().setCustomSettingsMenu(admin, Arrays.asList(
        "reset_settings", "system_updates", "apps_management"));

// 6) 配置预下发 + 锁死入口
new DeviceSettingsManager().setFontsizeCode(admin, 2);          // 示意:设标准字体
new DeviceSettingsManager().setDefaultInputMethod(admin, imeComponent, true); // 强制输入法,用户不可改
new DeviceSettingsManager().setTimeAndDateSetDisabled(admin, true);           // 锁死时间设置
```

> 依赖集成:项目级 build.gradle 加 `maven { url 'https://developer.hihonor.com/repo' }`,应用级 `compileOnly 'com.hihonor.mcs:magic-android:{version}'`(必须 compileOnly,防把空桩 jar 打进 APK)。

---

## 六、准入门槛、周期与成本注意

| 事项 | 内容 | 来源 |
|---|---|---|
| 主体资质 | 面向**企业移动业务 App 开发者**,要审核资质与 API 使用场景 | 业务介绍/证书文档 |
| 证书三级制 | 开发证书(6个月、绑 ≤50 台设备 IMEI/WIFIMAC、3 工作日)→ 临时商用证书(3个月、10 工作日)→ 正式商用证书(≤3年、10 工作日)。**商用证书与 APK 哈希强绑定,App 每次发版都要重申证书** | 荣耀证书介绍/FAQ |
| MDM API 授权有效期 | **仅 1 年**,到期需续授权,否则证书服务不可用 | FAQ Q32 |
| 签名要求 | APK 必须 V1+V2 签名,证书打包用 HonorDevPack.exe,META-INF 必须是 CERT.RSA | 开发指南/FAQ |
| 强制 UI | App 内必须实现"权限使用声明"弹窗,列出所用能力,否则**过不了证书审核** | 开发指南 |
| 版本适配 | 大量接口 Magic UI 4.0 起支持;部分新接口(默认输入法、强制定位开等)要求 MagicOS 7.0+;MagicOS 10.0 起"安全和隐私"菜单合并 | 各 API"支持设备"表 |
| 地域/设备 | 仅中国大陆;仅荣耀手机/平板/智慧屏 | 业务介绍 |

**隐性成本提醒**:
1. 云端后台 + 私有通道全部自建,这是最大的工作量(可参考成熟 UEM 的功能形态)。
2. 证书与 APK 强绑定 → 发布流水线要把"申请证书 → HonorDevPack 打包 → 二次 V1+V2 签名"固化进去。
3. App 版本升级路径必须一步到位(恢复出厂都关了,出问题只能靠云端策略远程放开)。
4. 激活流程需要"用户点一次激活按钮"——谷歌要求强制激活也不能免点击(FAQ Q18),做不到 100% 无感;要开箱全自动的话只走刷机/预装渠道 + Device Owner。

---

## 七、结论对照表(你要的 4 件事)

| 需求 | 能否实现 | 核心接口 | 备注 |
|---|---|---|---|
| 云端集中管控 + 下发指定 App | ✅ | installPackage / uninstallPackage / 广播收结果 | 云端通道自建;文件须走 FileProvider |
| 禁止指定 App 打开 | ✅ | addDisallowedRunningApp(黑名单)/ setTaskLockAppList(白名单) | 正在运行的也会被停止;黑名单 ≤1000 |
| 设置预配置自动下发 + 禁止用户自己设置 | ✅ | setValue 系列 + setCustomSettingsMenu + 105+ setXxxDisabled | "写值"与"锁入口"两步配套才锁得死 |
| 不能恢复出厂设置 | ✅ | setRestoreFactoryDisabled + 组合防绕过 + setControlMode 兜底 | 官方明说"用户不可进行恢复出厂设置操作" |

---

## 附:交付物清单

- `荣耀MDM-全部API清单-432接口.md`:21 个管理类、432 个接口的完整清单(含中文说明)
- `.temp/honor-mdm/docs/`:35 个页面原始文档(含元数据与原 URL,可直接溯源)
- `.temp/honor-mdm/raw/`:接口原始 JSON 响应备份
- `.temp/honor-mdm/index.json`:抓取索引(页名、docId、URL、内容长度)

> AI生成
 
 
 

posted on 2026-10-14 10:22  GKLBB  阅读(29)  评论(0)    收藏  举报