2012-05-18 19 views
9

No creo que esto sea posible, ya que no he encontrado nada en la documentación de SDK (todavía).Detectando mensajes de tostado

Pero podría hacer con saber si es posible escribir una aplicación que registra los mensajes de Toast. Registrando qué aplicación lo mostró y qué contenido contenía el mensaje.

Este es un esfuerzo totalmente personal para crear una aplicación que pueda detectar los mensajes de pan tostado. Debido a que algo en mi teléfono está creando un brindis diciendo "Enviando ..." aproximadamente una vez al día, y por mi vida no puedo rastrear la aplicación ofensiva (clase de servicio). Pensé que podría ser GMail o Evernote, pero los mensajes para enviar son ligeramente diferentes. Voy a construir una aplicación porque 1) No sé si LogCat mostrará algo, y 2) No quiero mantener mi teléfono personal/dev conectado a una PC todo el tiempo (como el "Envío"). ... "el mensaje aparece tan infrecuentemente).

+0

¿Terminó su aplicación y la puso en Google Play? –

+0

@ divideandconquer.se Nunca lo publiqué en google play porque estaba rastreando el problema. Pero funcionó. El mensaje provenía del Sim Tool Kit que estaba preinstalado. Nunca me molesté con google play ya que desde Android 4.1 las notificaciones te dicen qué aplicación las creó. – JonWillis

+4

@ divideandconquer.se He hecho una aplicación de esta pregunta: https://play.google.com/store/apps/details?id=org.mars3142.android.toaster – mars3142

Respuesta

16

Es posible detectar Mensajes/Notificaciones con Accessibility Service, eche un vistazo a eso.

Puede extender la clase AccessibilityService y reemplazar el método onAccessibilityEvent() implementar algo como esto:

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... 
    } 
} 

Nota: Esto no funcionó para mí en Android 2.2, ya que no parece coger tostadas, pero funcionó en Android 4.0+.

+0

Voy a darle una oportunidad, y hacerle saber el resultado – JonWillis

+0

tomó un tiempo para que el servicio funcione. Pero funcionó. El mensaje de envío de pan tostado ... proviene de com.android.stk – JonWillis

+0

funciona muy bien. Estado buscando esto por un tiempo una vez 4.0 golpeó las mesas, cosas un poco divertidas, pero esto lo soluciona :) –