2016-03-07 13 views
6

WhatsAppコールが開始されている(発信者と受信者の両方の側で)、または終了したときに、何らかの種類のnotification/Receiverを取得する必要があるアプリケーションを作成しています。アプリケーション内で着信/発信WhatsApp呼び出し情報を取得することは可能ですか?私は「com.whatsapp」としてパッケージ名を使用してAccessibility ServiceAndroid WhatsAppコールブロードキャストレシーバを開始

を使用しようとしました

、私は私の要件を満たすことができないんです。 誰かが私に何をすべきか教えてくれますか?またはこれは実際に行うことができますか?はいの場合は、どうか説明してください。

+0

いわゆる行動に携わったときのUIの振る舞いについて、あなたは何を確認しましたか? – JoxTraex

+0

私は、アクセシビリティサービスを使ってWhatsappから特定のテキストをキャッチしようとしましたが、Callボタンはテキストではなく描画可能です。それも問題ですので、whatsapp呼び出しが開始されたときと終了するときに情報を取得する他の方法があれば検索していましたか? –

+0

ユーザがwhatsappのアクションバーでコールアイコンをクリックしたときを知りたいですか? – Dinash

答えて

1

質問を解決しましょう.... アクセシビリティサービスは、必要なパッケージ名に対して通知を受け取ると通知するのに役立ちます。たとえば "com.whatsapp"と入力します。

これで、アクセシビリティサービス内でAndroid 4.2以降の通知メッセージを少しでも解析できます。あなたのために不運にも、正確にあなたの望むことをしていたgithub projectがありましたが、現在利用できません。

+0

上記リンクが壊れています。また、私は私の質問で述べたように私はアクセシビリティサービスを台無しにしているが、残念ながら私はそれで私の要件を得ることができません。 whatsappコールの開始時に私のアプリケーションでブロードキャスト/インテント/通知または任意の種類のフラグを取得したいからです。 –

+1

Accessiblityサービスを使用すると、whatsapp呼び出しボタンの上にテキストがないため、そのdrawableを追跡できません。それは捕まえにくく、コールエンドをどのように追跡することができますか? –

3

私はそれを試して、whatsapp呼び出しボタンをクリックし、終了ボタンのクリックアクションを呼び出すことができました。以下、私はトーストメッセージ、我々はなりドロウアブルためのトリックを示した上記のコードで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() { 

} 

}

にIを使用しないと、それはもはや異なる例より入手可能な単純なAccessibilityServiceであります「Talkback」アクセシビリティモードでシステムが使用できるcontentDescriptionを提供する。お役に立てれば!!!

+0

こんにちはディナッシュ、それはまた、whatappコールが受信/終了したときにトーストメッセージを表示しますか? – iAmLearning

+0

@iAデフォルトでは、受信と終了のトーストメッセージは表示されません。しかし、「終了」ボタンと「出席」ボタンのクリックを見つけることができます。 – Dinash

+0

ありがとうDinash。私はこれを試してみる – iAmLearning

関連する問題