Android recovery菜单页面选项定制

软件平台:Android13

硬件平台:高通SM6115

需求:Android进入recovery的菜单页面,只保留重启等两三个选项。

1、菜单页面是在recovery/recovery_ui/device.cpp里边定义的,内容如下:

cpp 复制代码
static std::vector<std::pair<std::string, Device::BuiltinAction>> g_menu_actions{
  { "Reboot system now", Device::REBOOT },
  { "Reboot to bootloader", Device::REBOOT_BOOTLOADER },
  { "Enter fastboot", Device::ENTER_FASTBOOT },
  { "Apply update from ADB", Device::APPLY_ADB_SIDELOAD },
  { "Apply update from SD card", Device::APPLY_SDCARD },
  { "Wipe data/factory reset", Device::WIPE_DATA },
  { "Wipe cache partition", Device::WIPE_CACHE },
  { "Mount /system", Device::MOUNT_SYSTEM },
  { "View recovery logs", Device::VIEW_RECOVERY_LOGS },
  { "Run graphics test", Device::RUN_GRAPHICS_TEST },
  { "Run locale test", Device::RUN_LOCALE_TEST },
  { "Enter rescue", Device::ENTER_RESCUE },
  { "Power off", Device::SHUTDOWN },
};

2、删除操作却是在recovery_main.cpp中,这里要先确认当下默认的菜单页有哪些,只能删除加载的项,否则会黑屏异常

cpp 复制代码
diff --git a/recovery_main.cpp b/recovery_main.cpp
index 9a358aba..56b43321 100644
--- a/recovery_main.cpp
+++ b/recovery_main.cpp
@@ -448,6 +448,18 @@ int main(int argc, char** argv) {
     device->RemoveMenuItemForAction(Device::ENTER_RESCUE);
   }
 
+  // yfd remove those menus
+  device->RemoveMenuItemForAction(Device::REBOOT_BOOTLOADER);
+  device->RemoveMenuItemForAction(Device::ENTER_FASTBOOT);
+  device->RemoveMenuItemForAction(Device::APPLY_ADB_SIDELOAD);
+  device->RemoveMenuItemForAction(Device::MOUNT_SYSTEM);
+  device->RemoveMenuItemForAction(Device::VIEW_RECOVERY_LOGS);
+  device->RemoveMenuItemForAction(Device::RUN_GRAPHICS_TEST);
+  device->RemoveMenuItemForAction(Device::RUN_LOCALE_TEST);
+  device->RemoveMenuItemForAction(Device::APPLY_SDCARD);
+  device->RemoveMenuItemForAction(Device::ENTER_RESCUE);
+  device->RemoveMenuItemForAction(Device::SHUTDOWN);
+
   ui->SetBackground(RecoveryUI::NONE);
   if (show_text) ui->ShowText(true);

注意:第二条,如何选择要删除的菜单项,否则删除本身就已经清除或者不加载的项,直接就会黑屏,这里比较麻烦,如果此时黑屏,看问题就得recovery接串口看了。

如上~~Mark。

相关推荐
又见情义2 小时前
RK3568 Android 13 板载驱动适配-USB
android·arm开发·驱动开发
delta_hell3 小时前
【阅读源码-Android】动画之Choreographer-2
android·源码·choreographer
mmsx3 小时前
基于 Android 的博物馆文化展示与预约 App —— 设计与实现(有源码和文档)
android·app·源码·文档
一笑的小酒馆4 小时前
AndroidAGP9.0升级之路
android
阮胜昌4 小时前
MySQL 中的动态数据脱敏:无需更改应用程序即可保护敏感数据
android·mysql·adb
aaajj7 小时前
关于MODIFY_PHONE_STATE权限
android
古法安卓7 小时前
Android-高版本 LMKD 源码解析:基于 PSI 的内存压力监控与查杀全流程
android·java·android studio
古法安卓7 小时前
Android-PSI 详解:libpsi 源码解析——116 行代码架起 lmkd 与内核之间的桥
android·java·android studio
mmsx10 小时前
Android 新闻资讯客户端实战:从零搭建一个完整的新闻 App
android·app·源码
三84412 小时前
PHP 绕过污点追踪构造 Webshell:反序列化引用复用与 Trait 可变函数 RCE
android