Процесс 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.

📊 Сталкивались ли вы с зависанием com.huawei.permissioncontroller.overlay?
Да, процесс занимал много памяти
Нет, работает штатно
Не замечал этот процесс
Увидел только в логах ADB

Основные функции и архитектура компонента

Служба реализует интерфейс 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

Выполнено: 0 / 5

Частая причина утечки — конфликт с приложениями записи экрана (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. Функционал идентичен, меняется только визуальная реализация.