web-dev-qa-db-fra.com

Écoutez les messages / notifications Whatsapp entrants

Je travaille sur une application basée sur les notifications, pour laquelle je dois écouter les notifications entrantes. J'ai pu écouter les appels entrants, les SMS, le courrier, etc. Je ne sais pas comment écouter les pings ou les messages d'amis sur Whatsapp via le code. Peut-on réellement le faire? Si c'est le cas, comment? Accessibility Service peut-il être utilisé pour cela, en utilisant le nom du package comme "com.whatsapp"?

28
sanjeev mk

J'ai pu le faire en utilisant Service d'accessibilité . En utilisant cela, vous pouvez écouter toutes les notifications sur la barre de notification. J'ai écouté la spécification d'application en ajoutant le nom du package au service d'accessibilité service info, qui dans ce cas était com.whatsapp. Je n'ai pas pu lire les messages, mais je suis averti chaque fois qu'un message arrive.

19
sanjeev mk

[~ # ~] oui [~ # ~]

Vous pouvez réellement analyser les notifications entrantes et les messages à l'intérieur depuis Android 4.2. Je l'ai fait: https://github.com/Snirpo/whatsapprelay . Ceci est fait avec un service d'accessibilité. Actuellement, il analyse les messages d'un certain groupe WhatsApp. Mais il peut être adapté pour analyser tous les messages. L'envoi de messages via WhatsApp est plus difficile malheureusement.

9
user2252051

À moins que les développeurs de cette application partagent intentionnellement un service, un fournisseur de contenu ou envoient intentionnellement des émissions publiques d'événements ou exposent un système d'enregistrement de diffusion personnalisé, il n'y a aucun moyen légitime de Android d'écouter) fonctionnement interne d'une application tierce. L'isolement de l'application est conçu en Android pour une raison très importante: sécurité.

5
S.D.

Les événements d'accessibilité n'attrapent que les événements de notifications entrantes, pas lorsqu'ils sont mis à jour. Pour l'instant, les notifications WhatsApp n'affiche pas le message, seulement l'expéditeur. Le message est ensuite ajouté par l'application WhatsApp avec une mise à jour, qui ne peut pas être détectée par le service d'accessibilité.

Vous n'aurez que quelque chose comme "1 nouveau message de XXX", mais cela peut suffire à vos besoins.

3
Nicolas LUCAS

Voir l'exemple ci-dessous pour intercepter les notifications Whatsapp:

public class Notifier extends AccessibilityService {


@Override
public void onCreate(){
    //Toast.makeText(this,"Oncreate", Toast.LENGTH_LONG).show();

}

@Override
protected void onServiceConnected() {
    // Set the type of events that this service wants to listen to.  Others
    // won't be passed to this service.
    Toast.makeText(this,"Service connected", Toast.LENGTH_LONG).show();
    AccessibilityServiceInfo info = new AccessibilityServiceInfo();
    info.feedbackType = AccessibilityServiceInfo.FEEDBACK_ALL_MASK;;
    info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED ;

    // If you only want this service to work with specific applications, set their
    // package names here.  Otherwise, when the service is activated, it will listen
    // to events from all applications.
    info.packageNames = new String[] {"com.whatsapp"};
    info.notificationTimeout = 100;

    setServiceInfo(info);

}

@Override
public void onAccessibilityEvent(AccessibilityEvent event) {

    if(event.getEventType() == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) {

            Toast.makeText(this,"Notification Catched", Toast.LENGTH_LONG).show();
        }

    }
}

Et n'oubliez pas de définir l'autorisation à partir des paramètres> Accessibilité afin d'accéder aux événements du système. Autorisez l'autorisation des paramètres.

vérifier ce lien

le service d'accessibilité n'est pas démarré

2
Marcel Verwey