Оказывается, что для корневых людей есть способ полностью отключить Direct Share!
Для краткой версии перейдите к нижней части этого ответа.
В поисках способа, чтобы эта глупая функция не давала мне ошибок, я посмотрел, как эта функция на самом деле реализована в приложениях разработчиками. Оказывается, что они регистрируют службу с получателем намерений (читай: прослушиватель событий), и когда я понял это, я начал искать способ заблокировать передачу определенных намерений через систему. Ну, на самом деле в Android это встроено. Он называется Intent Firewall . Я быстро понял, как создать для него правило, блокирующее получение приложений: «Привет, есть ли какие-либо приложения, которые хотят вызвать ошибку у пользователя, поместив пару кнопок Direct Share под большой палец, когда они собираются что-то нажать?» -мероприятие.
Вы просто создаете простой XML-файл, подобный этому, и помещаете его в него:
<rules>
<service block="true" log="true">
<intent-filter>
<action name="android.service.chooser.ChooserTargetService" />
</intent-filter>
</service>
</rules>
Теперь вам нужно положить его на телефон и скопировать в каталог Intent Firewall. На большинстве устройств, которые будут
/data/system/ifw/
Я просто использовал Root Explorer, чтобы скопировать туда файл (не требуется chmod), попытался поделиться чем-то, что вызвало появление целей Direct Share и BOOM! Ничего такого!
Я рекомендую немного пообщаться (см. Ссылки выше), особенно о том, как работает Intent Firewall и как найти папку.
Счастливого не делиться!