2016-03-07 40 views
6

Sto lavorando a un'applicazione che richiede di ottenere una sorta di notification/Receiver quando viene avviata la chiamata a WhatsApp (Sia sul chiamante che sul destinatario) o terminata. È possibile ottenere informazioni sulla chiamata in entrata/in uscita da WhatsApp all'interno della mia applicazione?Ricevitore di trasmissione start di Whatsapp Android

Ho provato ad utilizzare Accessibility Service

utilizzando il nome del pacchetto come "com.whatsapp", sono in grado di soddisfare la mia richiesta. Qualcuno mi suggerirà cosa dovrei fare? Oppure questo può essere fatto? SE sì, allora per favore spiega come.

+0

Che cosa hai confermato del comportamento dell'interfaccia utente di cosa succede quando si inseriscono i cosiddetti comportamenti? – JoxTraex

+0

Ho provato ad usare il Servizio di accessibilità per catturare un testo specifico da Whatsapp, ma il pulsante Chiama è un drawable, non il testo. È anche un problema Quindi stavo cercando un altro modo per ottenere informazioni quando inizia la chiamata whatsapp e quando finisce? –

+0

Vuoi sapere quando l'utente fa clic sull'icona della chiamata nella barra delle azioni di whatsapp? – Dinash

risposta

1

Risolviamo la query .... Il servizio di accessibilità vi aiuterà a ricevere una notifica quando riceverete le notifiche rispetto al nome del pacchetto richiesto. per esempio "com.whatsapp".

Ora la cosa buona è che è possibile analizzare il messaggio di notifica all'interno da Android 4.2 all'interno del servizio di accessibilità con un piccolo sforzo. Sfortunatamente per te, c'era uno github project che stava esattamente facendo la cosa che volevi, ma al momento non è disponibile.

+0

Il tuo link citato in rotto. Inoltre ho incasinato con il servizio di accessibilità come ho menzionato nella mia domanda, ma purtroppo non sono in grado di ottenere i miei requisiti con esso. Come voglio ottenere broadcast/Intent/Notifica o qualsiasi tipo di bandiera nella mia applicazione quando inizia la chiamata whatsapp. –

+1

Utilizzando il servizio Accessiblity, non sono in grado di tracciare il pulsante di chiamata di whatsapp poiché non c'è alcun testo su di esso, è disegnabile. che è difficile da catturare e allo stesso modo come posso rintracciare il call end? –

3

Ho provato e sono in grado di ottenere catturare il pulsante di chiamata whatsapp e fare clic sul pulsante fine azioni di clic. Di seguito è riportato il semplice AccessibilityService che ho usato e non è più diverso rispetto all'esempio disponibile in Android Developers website

public class MyAccessibilityService extends AccessibilityService { 

@Override 
protected void onServiceConnected() { 
    AccessibilityServiceInfo info = new AccessibilityServiceInfo(); 
    // Set the type of events that this service wants to listen to. Others 
    // won't be passed to this service. 
    info.eventTypes = AccessibilityEvent.TYPE_VIEW_CLICKED | 
      AccessibilityEvent.TYPE_VIEW_FOCUSED; 

    // 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","com.android.calendar"}; 

    // Set the type of feedback your service will provide. 
    info.feedbackType = AccessibilityServiceInfo.FEEDBACK_SPOKEN; 

    // Default services are invoked only if no package-specific ones are present 
    // for the type of AccessibilityEvent generated. This service *is* 
    // application-specific, so the flag isn't necessary. If this was a 
    // general-purpose service, it would be worth considering setting the 
    // DEFAULT flag. 

    // info.flags = AccessibilityServiceInfo.DEFAULT; 

    info.notificationTimeout = 100; 

    this.setServiceInfo(info); 



} 

@Override 
public void onAccessibilityEvent(AccessibilityEvent event) { 
    final int eventType = event.getEventType(); 
    String eventText = null; 
    switch(eventType) { 
     case AccessibilityEvent.TYPE_VIEW_CLICKED: 
      eventText = "Focused: "; 
      break; 
     case AccessibilityEvent.TYPE_VIEW_FOCUSED: 
      eventText = "Focused: "; 
      break; 
    } 

    //eventText = eventText + event.getContentDescription(); 

    // Do something nifty with this text, like speak the composed string 
    // back to the user. 
    Toast.makeText(getApplicationContext(),""+eventText +" --- "+event.getContentDescription(),Toast.LENGTH_LONG).show(); 
} 

@Override 
public void onInterrupt() { 

} 

}

Nel codice sopra ho mostrato un messaggio di pane tostato e il trucco per drawable saremo fornendo il contenutoDescrizione che potrebbe essere utilizzata dal sistema mentre si è in modalità di accessibilità "Talkback". Spero che questo ti aiuti!!!

+0

Ciao Dinash, mostra anche il messaggio di brindisi quando la chiamata whatapp viene ricevuta/terminata? – iAmLearning

+0

@iAmLearning per impostazione predefinita, non riceverai il messaggio per ricevere e terminare. Ma puoi riuscire a trovare il clic dei pulsanti Fine e Attendi chiamata. – Dinash

+0

ok. Grazie Dinash. Ci proverò – iAmLearning