检测Toast消息

时间:2012-05-18 21:03:58

标签: android toast

我不认为这是可能的,因为我还没有在SDK文档中找到任何内容。

但我知道是否有可能编写一个记录Toast消息的应用程序。记录哪个应用程序显示它以及显示的消息包含在哪里。

这是一个完全个人的努力来创建一个可以检测吐司消息的应用程序。因为我的手机上的东西正在创建一个叫“发送...”的祝酒词,每天约一次,而对于我的生活,我无法追踪有问题的应用程序(服务类)。我认为它可能是GMail或Evernote,但是发送的Toast消息略有不同。我打算建立一个应用程序,因为1)我不知道LogCat是否会显示任何内容,2)我不想让我的个人/开发电话一直插入PC(如“发送” ......“消息很少发生。”

1 个答案:

答案 0 :(得分:16)

可以使用Accessibility Service捕获消息/通知,看一下。

您可以扩展类AccessibilityService并覆盖方法onAccessibilityEvent()以实现以下内容:

public void onAccessibilityEvent(AccessibilityEvent event) {
    if (event.getEventType() != AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED)
        return; // event is not a notification

    String sourcePackageName = (String) event.getPackageName();

    Parcelable parcelable = event.getParcelableData();
    if (parcelable instanceof Notification) {
        // Statusbar Notification
    }
    else {
        // something else, e.g. a Toast message
        String log = "Message: " + event.getText().get(0) 
                   + " [Source: " + sourcePackageName + "]";
        // write `log` to file...
    }
}

注意:这在Android 2.2上不起作用,因为它似乎没有捕获Toasts,但它适用于Android 4.0 +。