Как определить, когда в мессенджере 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 для корневых устройств.

Другие вопросы по тегам