---
metadata:
  - name: generator
    content: Diplodoc Platform v5.39.1
alternate:
  - https://yandex.com/dev/contentblocker/doc/en/dg/concepts/adjustment.md
  - https://yandex.com/dev/contentblocker/doc/ru/dg/concepts/adjustment.md
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.com/dev/contentblocker/doc/ru/llms.txt

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

## Порядок обмена данными между браузером и дополнением  {#process-description}

1. Яндекс Браузер просматривает [манифесты](https://developer.android.com/guide/topics/manifest/manifest-intro.html) всех приложений, установленных на устройстве. Если манифест вашего дополнения удовлетворяет [требованиям](#filters-requirements), браузер добавляет его в список дополнений для блокировки контента.
1. Ваше дополнение может открыть пользователю раздел настроек браузера для блокировки контента, [отправив](#additional-settings) соответствующий [Intent](https://developer.android.com/reference/android/content/Intent.html#Intent).
1. После того как пользователь выбирает в настройках ваше дополнение, браузер закачивает из дополнения в свой кэш фильтры для блокировки контента. Поскольку фильтры кэшируются, об обновлениях фильтров нужно своевременно [сообщать](#update-filters) браузеру.
1. Браузер начинает вырезать контент на веб-страницах согласно правилам, содержащимся в фильтрах.

## Настройка манифеста дополнения {#filters-requirements}

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

1. Блок провайдера контента в файле [AndroidManifest.xml](https://developer.android.com/guide/topics/manifest/manifest-intro.html) должен иметь вид:

   ```text
   <[provider](*provider)
      android:name="<имя_пакета>.sampleContentProvider"
      android:authorities="<имя_пакета>.contentBlocker.contentProvider"
      android:exported="true">
   </provider>
   ```

   Описание атрибутов (все атрибуты обязательные):
    
    - **[android:name](https://developer.android.com/guide/topics/manifest/provider-element.html#nm)** — имя класса провайдера данных в произвольном формате.

        Пример:
    
        `android:name="my.content.blocker.FiltersContentProvider"`
    
    - **[android:authorities](https://developer.android.com/guide/topics/manifest/provider-element.html#auth)** — URI, по которому браузер будет обращаться к вашему [ContentProvider](https://developer.android.com/reference/android/content/ContentProvider.html). Должен быть составлен строго по схеме: `<имя_пакета>.contentBlocker.contentProvider`.

        Пример:
    
        `android:authorities="my.content.blocker.contentBlocker.contentProvider"`
    
    - **[android:exported](https://developer.android.com/guide/topics/manifest/provider-element.html#exported)** — атрибут, определяющий доступность ваших данных другим приложениям. Установите значение `true`, подразумевающее, что фильтры доступны для других приложений.

        Пример:
    
        `android-exported="true"`
    
1. В файл [AndroidManifest.xml](https://developer.android.com/guide/topics/manifest/manifest-intro.html) должна быть включена информация о версии API Блокировки контента:

    ```text
    <[meta-data](*meta-data) android:name="com.samsung.android.sbrowser.contentBlocker.interfaceVersion" android:value="API_1.0" />
    ```

    Описание атрибутов (все атрибуты обязательные):
    
    - **[android:name](https://developer.android.com/guide/topics/manifest/meta-data-element.html#nm)** — имя метатега. Должно полностью совпадать с написанным в примере (это необходимо для совместимости с [Samsung Internet for Android](http://developer.samsung.com/internet/android/extension-guide.html)).

        Пример:
    
        `android:name="com.samsung.android.sbrowser.contentBlocker.interfaceVersion"`
    
    - **[android:value](https://developer.android.com/guide/topics/manifest/meta-data-element.html#val)** — номер версии API Блокировки рекламы в мобильном браузере, с которой должно работать дополнение.

        Пример:
    
        `android:value="API_1.0"`
    
        {% note info %}
    
        Текущая версия API Блокировки контента — 1.0.
    
        {% endnote %}
    

## Обновление фильтров {#update-filters}

Яндекс Браузер проверяет версии дополнений при каждом запуске. Если версия дополнения поменялась, браузер заново запрашивает у дополнения фильтры.

Чтобы фильтры в кэше браузера обновлялись без задержки, дополнение может сообщать браузеру об обновлении фильтров сразу после того, как это произойдет.

Для этого нужно отправить [сообщение Broadcast](https://developer.android.com/reference/android/content/BroadcastReceiver.html) с объектом [Intent](https://developer.android.com/reference/android/content/Intent.html#Intent) вида:

```javascript
Intent intent = new Intent();
       intent.setAction("com.samsung.android.sbrowser.contentBlocker.ACTION_UPDATE");
       intent.setData(Uri.parse("package:<имя_пакета>"));
       sendBroadcast(intent);
```

Пример:

```javascript
Intent intent = new Intent();
       intent.setAction("com.samsung.android.sbrowser.contentBlocker.ACTION_UPDATE");
       intent.setData(Uri.parse("package:my.content.blocker"));
       sendBroadcast(intent);
```

Подробнее об атрибутах:
* [setAction](https://developer.android.com/reference/android/content/Intent.html#setAction%28java.lang.String%29);
* [setData](https://developer.android.com/reference/android/content/Intent.html#setData%28android.net.Uri%29) ([Uri.parse](https://developer.android.com/reference/android/net/Uri.html#parse%28java.lang.String%29));
* [sendBroadcast](https://developer.android.com/reference/android/content/Context.html#sendBroadcast%28android.content.Intent%29).

## Переход в настройки браузера после установки дополнения {#additional-settings}

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

1. Создайте [Intent](https://developer.android.com/reference/android/content/Intent.html#Intent), указав в качестве активности строку: 

    `intent.setAction("com.samsung.android.sbrowser.contentBlocker.ACTION_SETTING")`.
1. Вызовите метод [startActivity](https://developer.android.com/reference/android/content/Context.html#startActivity%28android.content.Intent%29) класса [Context](https://developer.android.com/reference/android/content/Context.html).

```javascript
 Intent intent = new Intent();
       intent.setAction("com.samsung.android.sbrowser.contentBlocker.ACTION_SETTING");
       startActivity(intent);
```

Подробнее об атрибутах:
* [setAction](https://developer.android.com/reference/android/content/Intent.html#setAction%28java.lang.String%29);
* [startActivity](https://developer.android.com/reference/android/content/Context.html#startActivity%28android.content.Intent%29).


[*provider]:[Оболочка](https://developer.android.com/guide/topics/manifest/provider-element.html), предоставляющая другим приложениям доступ к вашим данным.

[*meta-data]:[Мета-данные](https://developer.android.com/guide/topics/manifest/meta-data-element.html) дополнения.