我正在开发一个基于通知的应用程序,我需要监听传入的通知。我已经能够监听来电、短信、邮件等。我不知道如何通过代码监听Whatsapp上朋友的ping或消息。这真的可以做到吗?如果是这样的话,是怎么做的?使用包名为"com.whatsapp“的Accessibility Service可以做到这一点吗?
发布于 2013-02-16 14:53:22
我可以使用Accessibility Service做到这一点。使用此功能,您可以收听通知栏上的所有通知。我通过将包名称添加到可访问性服务service info
(在本例中为com.whatsapp
)来听取应用程序规范。我无法读取消息,但只要有消息到达,我就会收到通知。
发布于 2013-02-19 17:18:20
辅助功能事件只捕获传入的通知事件,而不是在更新时捕获。目前,WhatsApp通知不会显示消息,只会显示发件人。然后,WhatsApp应用程序将该消息添加到更新中,但辅助功能服务无法捕获该更新。
您将只有类似于"1条来自XXX的新消息“的内容,但这可能足以满足您的需求。
发布于 2017-12-22 14:35:18
请参阅下面的示例来捕获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();
}
}
}
别忘了设置settings>Accessibility的权限才能访问系统事件。允许来自设置的权限。
检查此链接
https://stackoverflow.com/questions/14540394
复制相似问题