13

SDK のドキュメントには (まだ) 何も見つからないので、これは可能ではないと思います。

しかし、Toast メッセージをログに記録するアプリケーションを作成できるかどうかを知ることはできました。どのアプリケーションが表示したか、表示されたメッセージに何が含まれていたかを記録します。

これは、トースト メッセージを検出できるアプリを作成するための完全に個人的な試みです。私の電話の何かが「送信中...」というトーストを1日に1回作成しているため、私の人生では、問題のアプリケーション(サービスクラス)を追跡できません。GMailかEvernoteかなと思ったのですが、送信用のトーストメッセージが少し違います。1) LogCat が何かを表示するかどうかわからない、2) 個人用/開発用の電話を常に PC に接続したままにしたくない ("送信...」というメッセージが表示されることはめったにありません)。

4

1 に答える 1

18

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では機能しませんでしたが、Android 4.0以降では機能しました.

于 2012-05-19T13:36:03.453 に答える