我正在通过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);
}
答案 0 :(得分:1)
我可以想到几个解决方案。
第三方是否提供API?您可以与之集成(如skype API)
如果第三方软件的活动可以接受您的电话,那么您可以通过提供适当的意图将控制转发给该活动。
我不知道电话管理器可以捕获有关VOIP呼叫的数据。我相信它的责任是针对电话本身的呼叫。我之前没有和电话经理合作过,所以我不知道。