我找到了一个似乎运作良好的不同解决方案。我有很多 Intents 组合,还尝试了上面建议的 ACTION_CALL_BUTTON,但在 4.3 中,它会打开一个新的拨号器,并且不会将您带到当前正在进行的呼叫。不确定这在旧 sdks 中的表现如何。经过大量研究和尝试,我发现它运行良好,尽管它可能需要一些优化......
telephonyManager = (TelephonyManager) getSystemService( Context.TELEPHONY_SERVICE );
if( telephonyManager.getCallState() == TelephonyManager.CALL_STATE_OFFHOOK )
{
ActivityManager m = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = m.getRunningTasks( 10 );
for( int i = 0; i < tasks.size(); ++i )
{
RunningTaskInfo task = tasks.get( i );
ComponentName component = task.baseActivity;
String packageName = component.getPackageName();
if( packageName.contains( "com.android.phone" ) )
{
m.moveTaskToFront( task.id, 0 );
return;
}
}
}
您还需要将权限添加到清单文件:
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.REORDER_TASKS" />