Слушайте входящие сообщения/уведомления Whatsapp

Я работаю над приложением, основанным на уведомлении, для которого мне нужно прослушивать входящие уведомления. Я мог слушать входящий звонок, смс, почту и т.д. У меня нет понятия, как слушать пинг или сообщения от друзей на Whatsapp через код. Можно ли это сделать? Если да, то как? Можно использовать службу специальных возможностей, используя имя пакета как "com.whatsapp"?

Спасибо за предложения.

Ответ 1

Я смог сделать это с помощью службы специальных возможностей. Используя это, вы можете прослушивать все уведомления на панели уведомлений. Я прослушал спецификацию приложения, добавив имя пакета в службу специальных возможностей service info, которая в этом случае была com.whatsapp. Я не мог читать сообщения, но получаю уведомление, когда приходит сообщение.

Ответ 2

Да

Фактически вы можете анализировать входящие уведомления и сообщения с Android 4.2. Я сделал это: https://github.com/Snirpo/whatsapprelay. Это делается с помощью accessibilityservice. В настоящее время он анализирует сообщения от определенной группы WhatsApp. Но он может быть адаптирован для анализа всех сообщений. Отправка сообщений через WhatsApp сложнее, к сожалению.

Ответ 3

Если разработчики этого приложения не намерены совместно использовать услугу, поставщика контента или намеренно отправлять публичные трансляции событий или выставлять собственную систему регистрации широковещательных сообщений, в андроиде нет законного способа прослушивать внутренние действия третьей стороны Приложение. Изоляция приложений разработана на Android по очень важной причине: безопасность.

Ответ 4

События доступности только улавливают входящие уведомления, а не когда они обновляются. Пока что уведомления WhatsApp не отображают сообщение, а только отправитель. Затем сообщение добавляется в приложение WhatsApp с обновлением, которое не может быть обнаружено службой доступности.

У вас будет только что-то вроде "1 нового сообщения от XXX", но этого может быть достаточно для ваших нужд.

Ответ 5

Ниже приведен пример, чтобы поймать уведомления 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();
        }

    }
}

И не забудьте установить разрешение из настроек > Доступность для доступа к системным событиям. Разрешить разрешение из настроек.

проверить эту ссылку

служба доступности не запущена