Android使用Telephony Manager从特定的第三方Voip App(如Cisco Jabber)拨打电话

时间:2012-10-08 06:16:16

标签: android broadcastreceiver call cisco telephonymanager

我正在通过Android应用程序拨打电话,它列出了一组能够拨打电话的应用,用户可以选择一个拨打电话。但我想知道的是,有没有办法将呼叫重定向到特定的第三方VOIP应用(如Cisco Jabber),而不是列出所有能够拨打电话的应用**。我尝试过使用

使用广播接收器注册ACTION_NEW_OUT_GOING_CALLS来中断传出呼叫,但我不知道如何重定向呼叫以下是广播接收器的代码。

public void onReceive(Context context, Intent intent) {

    Bundle bundle = intent.getExtras();

    String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);

    Log.d("Test", ""+phoneNumber);

    TelephonyManager telephoneManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

    try {
        Class<?> c = telephoneManager.getClass();
        Class className = Class.forName(c.getName());
        Log.d("Test", c.getSimpleName());
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }

    List<ResolveInfo> callAppList =  context.getPackageManager().queryIntentActivities(intent, 0);

    Log.d("Test", ""+callAppList.size());
    if(callAppList.size() > 0)
        Log.d("Test", callAppList.get(0).activityInfo.targetActivity);

}

1 个答案:

答案 0 :(得分:1)

我可以想到几个解决方案。

  1. 第三方是否提供API?您可以与之集成(如skype API)

  2. 如果第三方软件的活动可以接受您的电话,那么您可以通过提供适当的意图将控制转发给该活动。

  3. 我不知道电话管理器可以捕获有关VOIP呼叫的数据。我相信它的责任是针对电话本身的呼叫。我之前没有和电话经理合作过,所以我不知道。