Blocker это контроллер компонентов для приложений Android, который в настоящее время поддерживает использование PackageManager и Intent Firewall для управления состоянием компонентов. Его можно легко переключать между этими контроллерами, а правила приложений вы можете экспортировать и импортировать. Кроме того, он совместим с файлами резервных копий, созданными MyAndroidTools, и вы можете без труда преобразовать их в правила Intent Firewall. Приложение также имеет потенциал для расширения в будущем.

<h3>Преимущества</h3>
<ol>
<li>Легкий, не нагружает систему</li>
<li>Простота использования</li>
<li>Поддерживает несколько типов управления</li>
</ol>

<h3>Введение в различные контроллеры компонентов</h3>
<h4>Менеджер пакетов</h4>
Система Android предоставляет инструмент под названием PackageManager, который используется для управления установленными приложениями или получения информации о них. Один из его методов, <em>setComponentEnabledSetting(ComponentName, int, int)</em>, позволяет приложению управлять состоянием собственных компонентов. При попытке использовать этот метод для управления компонентами в других приложениях требуется разрешение подписи, иначе вызов завершится ошибкой.

К счастью, Android предоставляет другой инструмент под названием <em>pm</em>, который позволяет пользователям управлять состояниями компонентов в режиме командной строки. Однако для запуска инструмента <em>pm</em> требуются права root. Следующая команда может быть использована для отключения определенного пакета или компонента:
<blockquote>
pm disable [PackageName/ComponentName]
</blockquote>

Используется ли PackageManager в коде или <em>pm</em> в режиме командной строки, конфигурации будут записаны в <em>/data/system/users/0/package_restrictions.xml</em>.

<h4>Режим Intent Firewall</h4>
Intent Firewall был представлен в Android 4.4.2 (API 19) и по-прежнему эффективен в последних системах Android. Он интегрирован в Android Framework для фильтрации намерений (intents) отправленных приложениями или системами.

<h5>Что может Intent Firewall</h5>
Каждое намерение отправленное приложением фильтруется Intent Firewall, правила хранятся в XML-файлах. Intent Firewall немедленно обновляет правила если в файле конфигурации происходят изменения.

<h5>Ограничения Intent Firewall</h5>
Только системные приложения могут читать и записывать каталог в котором хранится файл конфигурации, а сторонние приложения не имеют разрешения на доступ к нему.

<h5>Различия между Intent Firewall и Package Manager</h5>
Intent Firewall, действительно является фаерволом, он не влияет на состояние компонента. Приложение обнаруживает что компонент включен, но просто не может запустить его.

Для компонентов отключенных PackageManager, если приложение запускает их будет брошено исключение. Разработчики могут перехватить это исключение, чтобы узнать, отключен компонент или нет, чтобы они могли повторно включить этот компонент. Вот почему компоненты будут неожиданно включены. Если вы используете контроллер Intent Firewall, проблем не возникнет.

<h3>UI</h3>
Приложение было разработано с использованием рекомендаций Material 3.
Огромное спасибо нашему дизайнеру пользовательского интерфейса: <a href="https://github.com/COPtimer">@COPtimer</a>

Экраны и элементы пользовательского интерфейса полностью созданы с использованием Jetpack Compose.

Приложение имеет две темы:
<ul>
<li>Динамический цвет — использует цвета на основе текущей цветовой темы пользователя (если поддерживается)</li>
<li>Тема по умолчанию — использует предопределенные цвета, когда динамический цвет не поддерживается</li>
</ul>
Каждая тема также поддерживает тёмный режим.
