我可以通过Intent发起电话:
String url = "tel:3334444";
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(url));
但它会留在电话屏幕上。我想要的是坚持我的应用活动。是否有可能在后台启动电话?或立即返回上一个活动。
答案 0 :(得分:1)
您需要在活动的一侧实施电话呼叫状态
// //处理手机状态
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) {
}
}
};
}
答案 1 :(得分:0)
在后台线程(可能需要在前台服务中)或常规(快速)重复警报轮询ActivityManager.getRunningTasks()。第一项任务是最顶层的。检查此任务的topActivity以查看它是否是InCallScreen(请注意,某些爱立信手机会将其替换为自定义类)。如果是,请将您的活动带到最前面。
如果呼叫被放弃,您需要使用TelephonyManager来观看挂机以停止后台线程或警报。