Блокировка уведомлений на основе содержания или прилипчивости

У меня есть приложение для обмена сообщениями (TextNow), которое иногда любит размещать липкое уведомление (чтобы уведомить меня, что я израсходовал свои данные и меня ограничивают), которое я не хочу и не могу отключить в настройках приложений.

Обычно, когда приложение злоупотребляет такими уведомлениями, я просто отключаю уведомления для этого приложения. Однако в этом случае я бы пропустил текстовые сообщения, если бы сделал это. Поэтому я надеялся на какой-то способ:

  • Блокировать уведомления на основе их содержания.
  • Для этого конкретного приложения разрешайте только отклоняемые уведомления.

У меня есть рутированный телефон.

Пример уведомления:

Скриншот Android с одним отображаемым уведомлением, в котором говорится: «TextNow Wireless: вы достигли лимита данных 4G за месяц, теперь вы используете данные 2G.  Нажмите, чтобы узнать больше».  и кнопка прямо под ней с надписью «Открыть textnow».

Примечание. Я опубликовал ответ на этот вопрос, но я все еще ищу лучшие варианты.

Что это за уведомление? Не могли бы вы упомянуть приложение и прикрепить скриншот?
@andy Приложение TextNow (которое я сейчас добавил в свой пост), и я добавил скриншот. Я действительно не знаю, как указать, какое уведомление, кроме того факта, что его нельзя отклонить; смахивание влево или вправо ничего не дает. Надеюсь, скриншот поможет.
Существует модуль xposed под названием GravityBox, в котором есть раздел окончательного управления уведомлениями. Это помогает? Я не знаю точно, может ли это делать то, что вы хотите, но это помогло людям избавиться от некоторых уведомлений. Кроме того, если это снимок экрана с вашего устройства, значит, у вас есть устройство Samsung, где xposed, вероятно, создает загрузочный цикл, поэтому сначала погуглите, чтобы увидеть, работает ли xposed на вашем устройстве, а затем попробуйте установить фреймворк и модуль, упомянутые выше.
Также есть еще один модуль Xposed под названием Notify Clean , который может позволить вам фильтровать уведомления на основе их содержимого в соответствии с вашим первоначальным запросом.

Ответы (2)

является предпочтительным вариантом, поскольку OP ищет контекстные действия. Доступно множество приложений. Я предпочитаю использовать MacroDroid , так как он бесплатный (до 5 макросов) и прост в освоении (приложение проведет вас через настройки — убедитесь, что в настройках приложения, которое вы активируете, игнорируется оптимизация батареи при использовании Marshmallow)

OP подтвердил в своем ответе, что подход Macrodroid, предложенный мной в комментариях, сработал, и его ответ также касается другого приложения автоматизации .

Для начала вам понадобятся два макроса ( требуется root )

Первый макрос будет выглядеть так (триггеры/действия/ограничения добавляются с помощью + )

Макрос 1: удалить уведомление (имя макроса)

Триггер : УведомлениеПолучено уведомлениеВыбрать приложениеВыбрать приложениеТекстовое содержимоеСодержит (текст уведомления, который вы хотите отключить)

Действия :

Настроить уведомления приложенийВыбрать приложениеОтключить

Ограничения : Нет ограничений

Логика: нам нужно определить содержание уведомления, чтобы отключить его появление. Отсутствие указания каких-либо ограничений означает, что мы хотим, чтобы макрос всегда выполнялся.

В следующем макросе мы удостоверимся, что если содержимое уведомления отличается от других, это уведомление отображается.

Макрос 2: включить уведомление (имя макроса)

Триггер : УведомлениеПолучено уведомлениеВыбрать приложениеВыбрать приложениеТекстовое содержимоеИсключить (текст уведомления, который был отключен в предыдущем макросе)

Действия :

Настроить уведомления приложенийВыбрать приложениеВключить

Примечание:

  1. Протестировано и работает на Moto X Play, Android 6.0.1, с другим приложением, так как приложение в OP не работает в стране.

  2. По моему опыту, сильно модифицированные ОС, такие как Samsung, Huawei, MIUI, иногда дают неожиданные результаты, поэтому лучше иметь два отдельных макроса — проще устранять неполадки из журналов приложений.

Оптимальный подход

После того, как вы заставите их работать удовлетворительно, вы можете элегантно объединить вышеуказанные макросы, чтобы получить один макрос (я не тестировал, так как у меня нет приложений, которые создают несколько липких уведомлений, но должны работать). Это лучший подход , поскольку уведомления не теряются, как указано OP в его решении.

Это отклонит любые другие уведомления, которые одновременно открываются из того же приложения.

Макрос: включить / отключить уведомление выборочно

Триггер : УведомлениеПолучено уведомлениеВыбрать приложениеВыбрать приложениеТекстовое содержимоеЛюбое

Действия :

Пункт «Если» → « Добавить условие » → «Присутствует уведомление» → «Выбрать приложение» * → « Выбрать приложение» → « Текстовое содержимое» → « Соответствует» (текст уведомления, для которого вы хотите отключить)

  • Добавить дочернее действие (длительным нажатием вышеуказанного действия) первого макроса

  • Добавьте предложение else (длительное нажатие , если ) и добавьте действие второго макроса

Это можно сделать хакерским способом, используя инструмент автоматизации, такой как Automate или MacroDroid . Другие, вероятно, также будут работать, но я их не пробовал. Прежде всего обратите внимание, что:

  • Для этого требуется рут.
  • Это отклонит любые другие уведомления, которые одновременно открываются из того же приложения.

Сделайте макрос, который:

  1. Ждет, пока уведомление не будет опубликовано.
    • В MacroDroid установите триггер «Уведомление получено». Установите содержимое в соответствии с уведомлением, которое вы хотите заблокировать.
    • В Automate используйте «Уведомление опубликовано?» блок с «Продолжить», установленным на «При переходе». На блок-схеме соедините «Нет» с «Входом».
  2. Отключает уведомления для приложения.
    • На MacroDroid используйте «Настроить уведомление приложения»> «Отключить».
    • В Automate используйте блок «Состояние набора уведомлений приложения», а для параметра «Уведомления» установлено значение «Выкл.».
  3. Включает уведомления для приложения.
    • То же, что и выше, но включить (включить) вместо отключения.

Спасибо комментарию beeshyam за то, что помогли мне пройти большую часть пути.

+1 для другого приложения. Пожалуйста, ознакомьтесь с комбинированным подходом в последней части моего решения, чтобы переопределить выявленную проблему.