Как определить, когда в мессенджере Facebook открыт пузырь?
Facebook использует сервис, чтобы выдвинуть пузырь мессенджера на Android - что-то вроде следующего: http://www.piwai.info/chatheads-basics/
Я хочу определить, когда пузырь открывается / закрывается
Я начал исследовать следующие варианты -
Прослушайте (потянув) запущенные сервисы - я обнаружил, что есть 4 службы, когда отображается мессенджер, и 2, когда он убит. Я хочу знать, когда пузырь мессенджера близок, чтобы он не помог мне.
Прослушивание уведомлений - я знаю, когда оно полностью удалено (когда пользователь перетаскивает его в область "X") - также не помогло.
Я ищу взлом, чтобы узнать, когда пузырь Facebook открыт и когда он закрывается.
2 ответа
Под открытыми \ закрытыми вы подразумевали, что пузырь чата остается на экране, а окно чата открывается / закрывается, или что пузырь либо видим, либо невидим? В случае последнего:
Осматривая AndroidManifest.xml
мы можем видеть следующее:
<receiver android:name="com.facebook.orca.chatheads.service.ChatHeadsServiceBroadcastReceiver"
android:permission="com.facebook.permission.prod.FB_APP_COMMUNICATION">
<intent-filter android:priority="499">
<action android:name="com.facebook.orca.chatheads.ACTION_SHOW_CHATHEADS"/>
<action android:name="com.facebook.orca.chatheads.ACTION_HIDE_CHATHEADS"/>
<action android:name="com.facebook.orca.chatheads.ACTION_SET_CHATHEADS_POLICY"/>
</intent-filter>
</receiver>
Вы могли бы попытаться перехватить эти трансляции внутри собственной службы и как-то отследить открытие \ закрытие пузырьков.
(Раскрытие информации: я никогда сам не пробовал ничего подобного, и был бы рад пересмотреть \ удалить этот ответ, если это предложение окажется непрактичным)
Боюсь, ты не сможешь этого сделать.
Для этого приложение Facebook должно использовать один из общедоступных API-интерфейсов Android, таких как Broadcasts
или даже Notifications
, Но они не используют ни одного из них.
Когда пользователь закрывает пузырь, он просто закрывается внутри. Вы не можете получить к нему доступ.
Вы можете получить к нему доступ, используя то, что называется xposed framework
для корневых устройств.