Настройка взаимодействия с API Блокировки контента

Порядок обмена данными между браузером и дополнением

  1. Яндекс.Браузер просматривает манифесты всех приложений, установленных на устройстве. Если манифест вашего дополнения удовлетворяет требованиям, браузер добавляет его в список дополнений для блокировки контента.
  2. Ваше дополнение может открыть пользователю раздел настроек браузера для блокировки контента, отправив соответствующий Intent.
  3. После того как пользователь выбирает в настройках ваше дополнение, браузер закачивает из дополнения в свой кэш фильтры для блокировки контента. Поскольку фильтры кэшируются, об обновлениях фильтров нужно своевременно сообщать браузеру.
  4. Браузер начинает вырезать контент на веб-страницах согласно правилам, содержащимся в фильтрах.

Настройка манифеста дополнения

Чтобы Яндекс.Браузер мог получить фильтры от вашего дополнения:

  1. Блок провайдера контента в файле 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"

  2. В файл 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);

Переход в настройки браузера после установки дополнения

Сразу после установки ваше дополнение может открыть на устройстве настройки Яндекс.Браузера и предложить пользователю выбрать дополнение для блокировки контента. Для этого:

  1. Создайте Intent, указав в качестве активности строку: intent.setAction("com.samsung.android.sbrowser.contentBlocker.ACTION_SETTING").
  2. Вызовите метод startActivity класса Context.
 Intent intent = new Intent();
       intent.setAction("com.samsung.android.sbrowser.contentBlocker.ACTION_SETTING");
       startActivity(intent);