13

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

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

这完全是个人努力创建一个可以检测 toast 消息的应用程序。因为我手机上的某些东西正在创建一个吐司,说“正在发送......”大约每天一次,而在我的一生中,我无法追踪有问题的应用程序(服务类)。我以为可能是 GMail 或 Evernote,但发送的 toast 消息略有不同。我打算构建一个应用程序,因为 1)我不知道 LogCat 是否会显示任何内容,以及 2)我不想让我的个人/开发手机一直插在 PC 上(作为“发送...”消息很少出现)。

4

1 回答 1

18

可以使用Accessibility Service捕获 Messages/Notifications ,看看那个。

您可以扩展该类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+ 上有效。

于 2012-05-19T13:36:03.453 回答