2016-03-07 42 views
6

WhatsApp çağrısı başlatıldığında (Hem Arayan hem de Alıcıda sona eriyor) veya bittiğinde bir çeşit notification/Receiver alması gereken bir uygulama üzerinde çalışıyorum. Gelen/Giden WhatsApp çağrı bilgilerini başvurumda almak mümkün mü?Android Whatsapp Çağrı Başlangıç ​​Yayını Alıcısı

ben "com.whatsapp" olarak paket adını kullanarak Accessibility Service

kullanmaya çalıştık, benim gereksinimi karşılamak veremiyoruz. Kimse bana ne yapmam gerektiğini önerecek mi? Veya bu gerçekten yapılabilir mi? Evet ise, o zaman lütfen nasıl olduğunu açıklayınız.

+0

UI'nin davranışları söz konusu olduğunda, neyin davranışları hakkında doğruladınız? – JoxTraex

+0

Whatsapp'tan belirli bir Metni yakalamak için Erişilebilirlik Hizmetini kullanmayı denedim, ancak Arama düğmesi metne değil, çizilebilir. Onun da bir problemi Yani whatsapp çağrısı başladığında ve bittiğinde bilgi almak için başka bir yol olup olmadığını arıyordum? –

+0

Kullanıcı whatsapp actionbar içinde arama simgesini tıkladığında bilmek ister misiniz? – Dinash

cevap

1

Sorunu çözelim .... Erişilebilirlik Hizmeti, gerekli paket adınızla ilgili bildirimleri alacağınız konusunda size bilgi vermenize yardımcı olacaktır. örneğin "com.whatsapp".

Şimdi iyi bir şey, uyarı mesajını Android 4.2'den bu yana Erişilebilirlik Hizmeti içinde biraz çaba ile ayrıştırabilmenizdir. Sizin için unluckily, tam olarak istediğiniz şeyi yapan bir github project vardı ama şu anda kullanılamıyor.

+0

Belirtilen bağlantınız bozuk. Ayrıca, sorularımda belirttiğim gibi Erişilebilirlik Hizmetiyle uğraştım, ancak ne yazık ki gereksinimlerimı alamıyorum. Whatsapp çağrısı başladığında benim uygulamada yayın/niyet/bildirim veya herhangi bir bayrak almak istiyorum. –

+1

Accessiblity hizmetini kullanarak, üzerinde herhangi bir metin bulunmadığı için, whatsapp çağrısı düğmesini izleyemiyorum, çekilebilir. Bu neredeyse yakalamak ve aynı şeyleri nasıl bitirebilirim? –

3

Denedim ve whatsapp çağrısı düğmesini tıklatıp bitir düğmesi tıklatma eylemlerini yakalayabiliyorum. Aşağıda bir tost mesajı ve biz olacak çekilebilir için numara gösterdi gelmiş Yukarıdaki kodda 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() { 

} 

}

mevcut örnek daha basit kullandığım AccessibilityService ve bu fazla farklıdır "Talkback" erişilebilirlik modundayken sistem tarafından kullanılabilecek contentDescription öğesinin sağlanması. Bu yardımcı olur umarım!!!

+0

Merhaba Dinash, whatapp çağrısı alındığında/bittiğinde de tost mesajını gösteriyor mu? – iAmLearning

+0

@iAmSabit varsayılan olarak, alma ve bitirme için tost mesajını alamazsınız. Ancak, Son düğmesini ve Çağrıya Katıl düğmelerini bulmayı başarabilirsiniz. – Dinash

+0

ok. Teşekkürler Dinash. Bunu deneyeceğim – iAmLearning