Процесс com.huawei.permissioncontroller.overlay — это системная служба EMUI и HarmonyOS, отвечающая за отображение диалоговых окон запроса разрешений поверх интерфейса приложений. Она перехватывает обращения программ к чувствительным ресурсам (камера, микрофон, геолокация, контакты) и выводит стандартное модальное окно с кнопками «Разрешить» и «Запретить», не зависящее от дизайна самого приложения.
В отличие от стандартного Android PermissionController, реализация Huawei интегрирована в фреймворк HMS Core и поддерживает каскадные запросы: если пользователь нажал «Не спрашивать снова», служба блокирует повторные всплывания до сброса настроек в разделе «Приложения → Права». Компонент подписан сертификатом производителя и запускается под системным UID 1000, поэтому антивирусы часто помечают его как «безопасный системный процесс».
Почему служба появляется в списке работающих процессов
Пользователи обнаруживают com.huawei.permissioncontroller.overlay в меню «Разработчика → Запущенные службы» или через ADB-команду dumpsys activity services сразу после установки нового приложения, запросившего доступ к камере или микрофону. Служба остаётся в памяти 10–30 секунд после закрытия диалога, чтобы ускорить следующий запрос — это нормальное поведение кэширования Zygote-процесса.
Частый триггер — фоновая проверка разрешений системными модулями: Phone Clone, Petal Search или клавиатура SwiftKey при первом запуске. Если процесс «зависает» и потребляет более 50 МБ ОЗУ дольше минуты, причина — конфликт с оверлеями сторонних лончеров или приложений-записывателей экрана, которые тоже запрашивают SYSTEM_ALERT_WINDOW.
Основные функции и архитектура компонента
Служба реализует интерфейс IPermissionController и взаимодействует с ActivityManagerService через Binder-транзакции. Ключевые задачи:
- 🛡️ Показ системных диалогов разрешений поверх любых окон, включая полноэкранные игры и навигацию.
- 🔐 Обработка разовых разрешений (one-time permissions), введённых в Android 11 и поддержанных в EMUI 12+.
- 📋 Ведение журнала решений пользователя в базе
permission_state.dbдля аудита и отката. - 🔄 Синхронизация политик с Device Policy Controller (DPC) на корпоративных устройствах.
Архитектура модуля разделена на два процесса: com.huawei.permissioncontroller (бэкенд, проверка политик) и com.huawei.permissioncontroller.overlay (фронтенд, рендеринг UI). Разделение позволяет перезапускать только UI-часть при смене темы или плотности экрана без потери состояния политик.
Технические детали Binder-интерфейса
Методы интерфейса: checkPermission(uid, pid, permission), requestPermission(token, permissions), onPermissionResult(token, results). Транзакции идут через системный сервер system_server, PID обычно 1000-2000. Логи можно посмотреть командой: adb logcat -s PermissionController:V OverlayManager:V
Можно ли отключить или удалить службу
Удалить com.huawei.permissioncontroller.overlay стандартными средствами нельзя — пакет находится в разделе /system/priv-app и защищён dm-verity. Попытка удаления через pm uninstall -k --user 0 приведёт к бесконечной перезагрузке (bootloop), так как ActivityManager не найдёт обработчик для интента android.intent.action.REQUEST_PERMISSIONS.
Отключение через pm disable-user также критично: все установленные приложения потеряют способность запрашивать разрешения во время работы. Единственный безопасный сценарий — замена на кастомный PermissionController в прошивках на базе AOSP (LineageOS, crDroid), где используется стандартный com.android.permissioncontroller.
⚠️ Внимание: Не используйте дебайнеры вроде «App Manager» или «System App Remover» для отключения этого компонента. На EMUI 13 / HarmonyOS 3 это гарантированно вызовет ошибку «Не отвечает» у любого приложения, требующего доступ к камере или микрофону.
Диагностика аномального потребления ресурсов
Если процесс постоянно держит 80–150 МБ ОЗУ и не уходит в кэш, выполните пошаговую проверку:
☑️ Чек-лист диагностики Permission Controller
Частая причина утечки — конфликт с приложениями записи экрана (AZ Screen Recorder, Mobizen), которые удерживают MediaProjection и заставляют Permission Controller перерисовывать оверлей каждый кадр. Решение: отозвать право «Над другими окнами» у рекордера или обновить его до версии с поддержкой Virtual Display API.
Таблица: отличия от стандартного Android PermissionController
| Параметр | Android AOSP | Huawei EMUI / HarmonyOS |
|---|---|---|
| Пакет UI | com.android.permissioncontroller | com.huawei.permissioncontroller.overlay |
| Пакет бэкенда | com.android.permissioncontroller | com.huawei.permissioncontroller |
| Интеграция с HMS | Нет | Полная (Push Kit, Analytics Kit) |
| Поддержка разовых разрешений | Android 11+ | EMUI 12+ / HarmonyOS 2+ |
| Кастомизация тем | Ограничена | Динамическая (следит за ThemeManager) |
Взаимодействие с корпоративными политиками (MDM)
На устройствах, заведённых в Huawei Mobile Device Management, служба получает политики через DevicePolicyManager и блокирует изменение решений пользователем для заданного списка пакетов. Администратор может зафиксировать статус «Разрешено» или «Запрещено» для камеры, микрофона и геолокации, и диалог перестанет появляться — Permission Controller просто вернёт заранее заданный результат.
Это поведение логируется в logcat тегом PermissionController_MDM. Если вы видите строки enforced by admin, значит устройство под управлением ИТ-отдела, и пользовательские настройки прав игнорируются. Снять профиль MDM можно только через «Настройки → Безопасность → Профили устройства» с паролем администратора.
⚠️ Внимание: На корпоративных телефонах сброс настроек приложений не снимет политики MDM. Permission Controller продолжит применять принудительные правила до удаления профиля управления.
Если диалог разрешений не появляется, а приложение пишет в логи"Permission denied", проверьте настройки HMS Core: Настройки → Приложения → HMS Core → Права → должны быть включены"Телефон","Хранилище" и"Над другими окнами". Без них Permission Controller не может отрисовать оверлей.
Частые ошибки и коды возврата
Разработчики, интегрирующие запрос разрешений через ActivityCompat.requestPermissions, могут столкнуться с нестандартными кодами результата на Huawei:
- 📱
PERMISSION_GRANTED_SYSTEM_FIXED(int 42) — разрешение выдано политикой MDM, пользовательский диалог не показывался. - 🔒
PERMISSION_DENIED_OVERLAY_BLOCKED(int -112) — другой оверлей (запись экрана, синий фильтр) перекрыл окно Permission Controller, запрос отменён системой. - ⏱
PERMISSION_REQUEST_TIMEOUT(int -110) — пользователь не ответил в течение 30 секунд, диалог автозакрылся.
Обработка этих кодов позволяет корректно показывать собственные объяснения (rationale) вместо бесконечного повторного запроса. В HarmonyOS 4 добавлен новый флаг FLAG_AUTO_REVOKE_WHEN_UNUSED, автоматически отзывающий разовые разрешения через 90 дней неактивности приложения.
Главный вывод: com.huawei.permissioncontroller.overlay — легатимный системный компонент, удаление или отключение которого ломает механизм разрешений во всей ОС. При проблемах с памятью чистите кэш HMS Core и проверяйте приложения с правом"Над другими окнами".
FAQ: ответы на популярные вопросы
Почему процесс запускается сразу после загрузки системы?
Служба регистрируется как системный провайдер разрешений на этапе BOOT_COMPLETED, чтобы быть готовой к запросам ещё до запуска лаунчера. Это нормально и не влияет на время загрузки.
Можно ли заменить стандартные диалоги на свои?
Нет, системный Permission Controller имеет приоритет TYPE_SYSTEM_ALERT и перекрывает любые кастомные вью. Единственный способ — собрать прошивку с модифицированным frameworks/base/packages/PermissionController.
Что означает запись в логах"Overlay not allowed for package"?
Приложение попыталось показать свой оверлей поверх системного диалога разрешений. Система блокирует это для предотвращения кликджекинга. Проверьте, не запущено ли приложение с правом"Над другими окнами" (например, пузыри чатов мессенджеров).
Влияет ли очистка кэша HMS Core на работу Permission Controller?
Да, кэш HMS Core содержит скомпилированные DEX-файлы и ресурсы тем для оверлея. После очистки первый запрос разрешения может занять на 200–400 мс дольше из-за JIT-компиляции.
Почему на HarmonyOS 4 диалог выглядит иначе, чем на EMUI 13?
HarmonyOS 4 использует новый дизайн-систему ArkUI с углами, динамическим цветом (Material You) и анимацией появления через SpringAnimation. Функционал идентичен, меняется только визуальная реализация.