Настройка взаимодействия с API Блокировки контента
Порядок обмена данными между браузером и дополнением
- Яндекс Браузер просматривает манифесты всех приложений, установленных на устройстве. Если манифест вашего дополнения удовлетворяет требованиям, браузер добавляет его в список дополнений для блокировки контента.
- Ваше дополнение может открыть пользователю раздел настроек браузера для блокировки контента, отправив соответствующий Intent.
- После того как пользователь выбирает в настройках ваше дополнение, браузер закачивает из дополнения в свой кэш фильтры для блокировки контента. Поскольку фильтры кэшируются, об обновлениях фильтров нужно своевременно сообщать браузеру.
- Браузер начинает вырезать контент на веб-страницах согласно правилам, содержащимся в фильтрах.
Настройка манифеста дополнения
Чтобы Яндекс Браузер мог получить фильтры от вашего дополнения:
-
Блок провайдера контента в файле 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);
Подробнее об атрибутах:
Оболочка, предоставляющая другим приложениям доступ к вашим данным.
Мета-данные дополнения.