Настройка взаимодействия с API Блокировки контента
Порядок обмена данными между браузером и дополнением
- Яндекс.Браузер просматривает манифесты всех приложений, установленных на устройстве. Если манифест вашего дополнения удовлетворяет требованиям, браузер добавляет его в список дополнений для блокировки контента.
- После того как пользователь выбирает в настройках ваше дополнение, браузер закачивает из дополнения в свой кэш фильтры для блокировки контента. Поскольку фильтры кэшируются, об обновлениях фильтров нужно своевременно сообщать браузеру.
- Браузер начинает вырезать контент на веб-страницах согласно правилам, содержащимся в фильтрах.
Настройка манифеста дополнения
Чтобы Яндекс.Браузер мог получить фильтры от вашего дополнения:
- Блок провайдера контента в файле AndroidManifest.xml должен иметь вид:
<provider android:name="<имя_пакета>.sampleContentProvider" android:authorities="<имя_пакета>.contentBlocker.contentProvider" android:exported="true"> </provider>
Описание атрибутов (все атрибуты обязательные):
- android:name — имя класса провайдера данных в произвольном формате.
Пример:
android:name="my.content.blocker.FiltersContentProvider"
- android:authorities — URI, по которому браузер будет обращаться к вашему ContentProvider. Должен быть составлен строго по схеме:
<имя_пакета>.contentBlocker.contentProvider
.Пример:
android:authorities="my.content.blocker.contentBlocker.contentProvider"
- android:exported — атрибут, определяющий доступность ваших данных другим приложениям. Установите значение
true
, подразумевающее, что фильтры доступны для других приложений.Пример:
android-exported="true"
- В файл AndroidManifest.xml должна быть включена информация о версии API Блокировки контента:
<meta-data android:name="com.samsung.android.sbrowser.contentBlocker.interfaceVersion" android:value="API_1.0" />
Описание атрибутов (все атрибуты обязательные):
- android:name — имя метатега. Должно полностью совпадать с написанным в примере (это необходимо для совместимости с Samsung Internet for Android).
Пример:
android:name="com.samsung.android.sbrowser.contentBlocker.interfaceVersion"
- android:value — номер версии API Блокировки рекламы в мобильном браузере, с которой должно работать дополнение.
Пример:
android:value="API_1.0"
Примечание. Текущая версия API Блокировки контента — 1.0.
Обновление фильтров
Яндекс.Браузер проверяет версии дополнений при каждом запуске. Если версия дополнения поменялась, браузер заново запрашивает у дополнения фильтры.
Чтобы фильтры в кэше браузера обновлялись без задержки, дополнение может сообщать браузеру об обновлении фильтров сразу после того, как это произойдет.
Для этого нужно отправить сообщение Broadcast с объектом Intent вида:
Intent intent = new Intent();
intent.setAction("com.samsung.android.sbrowser.contentBlocker.ACTION_UPDATE");
intent.setData(Uri.parse("package:<имя_пакета>"));
sendBroadcast(intent);
Пример:
Intent intent = new Intent();
intent.setAction("com.samsung.android.sbrowser.contentBlocker.ACTION_UPDATE");
intent.setData(Uri.parse("package:my.content.blocker"));
sendBroadcast(intent);
Переход в настройки браузера после установки дополнения
Сразу после установки ваше дополнение может открыть на устройстве настройки Яндекс.Браузера и предложить пользователю выбрать дополнение для блокировки контента. Для этого:
- Создайте Intent, указав в качестве активности строку:
intent.setAction("com.samsung.android.sbrowser.contentBlocker.ACTION_SETTING")
. - Вызовите метод startActivity класса Context.
Intent intent = new Intent();
intent.setAction("com.samsung.android.sbrowser.contentBlocker.ACTION_SETTING");
startActivity(intent);