Android 安卓:我如何在活动中启动电话呼叫,然后再返回?
我可以通过以下方式启动电话:Android 安卓:我如何在活动中启动电话呼叫,然后再返回?,android,android-activity,return,phone-call,Android,Android Activity,Return,Phone Call,我可以通过以下方式启动电话: String url = "tel:3334444"; Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(url)); 但它将停留在电话屏幕上。我想要的是留在我的应用程序活动中。是否可能在后台启动电话?或者立即返回到上一个活动。在后台线程中(可能需要在前台服务中)或在常规(快速)重复报警轮询活动管理器上。getRunningTasks()。第一项任务是最重要的。检查此任务的topAct
String url = "tel:3334444";
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(url));
但它将停留在电话屏幕上。我想要的是留在我的应用程序活动中。是否可能在后台启动电话?或者立即返回到上一个活动。在后台线程中(可能需要在前台服务中)或在常规(快速)重复报警轮询活动管理器上。getRunningTasks()。第一项任务是最重要的。检查此任务的topActivity,查看它是否为InCallScreen(注意,在某些爱立信手机上,这被自定义类替换)。如果是,把你的活动带到最前面
如果呼叫被放弃,您需要使用TelephonyManager监视on hook停止后台线程或报警。您需要在活动端实现Phonecall状态 ////处理电话状态
private PhoneStateListener phoneListener = new PhoneStateListener() {
public void onCallStateChanged(int state, String incomingNumber) {
try {
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:
Toast.makeText(activity.this, "CALL_STATE_RINGING", Toast.LENGTH_SHORT).show();
mediaPlayer.pause();
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Toast.makeText(activity.this, "CALL_STATE_OFFHOOK", Toast.LENGTH_SHORT).show();
mediaPlayer.pause();
break;
case TelephonyManager.CALL_STATE_IDLE:
Toast.makeText(activity.this, "CALL_STATE_IDLE", Toast.LENGTH_SHORT).show();
mediaPlayer.start();
break;
default:
Toast.makeText(activity.this, "default", Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
}
}
};
}我想说的是,这并不是安卓系统的工作原理。不要试图这样做。你在破坏系统,试图让它弯曲,让它做不该做的事情。@KurtisNusbaum:为什么会这样?我可以想出至少两到三个合理的理由来解释为什么我想在后台打电话,这样就不会干扰我在任务中所做的任何事情,主要是在与使用扬声器的电话配对时。我理解对安全和诈骗拨号器的关注,但仍然。。。呼叫始终可以在通知栏中访问。它离用户只有两步之遥(这就是为什么我之前的答案被合法删除的原因)。也许我很天真,但我很诚实:如果为什么,那为什么不呢?@David,我忘了这个电话是在通知栏上挂的,这样用户就可以访问它了。这一点说得很好。我想这样做没问题。是的,我就是这么想的。不管怎样,这个答案(我的)不起作用,至少对拨号器来说不起作用。搜索更多我发现:这个问题的最后一个机会是,如果Android实现了一种拨号方式,而不将拨号器活动放在前面。但我开始怀疑,因为你看不到应用程序正在呼叫谁。事实是,在所有的事情都说了,做了之后,这可能真的会更好。