Android:如何在我的活动中启动电话,然后再回到它?

时间:2011-11-10 02:42:36

标签: android android-activity return phone-call

我可以通过Intent发起电话:

    String url = "tel:3334444";
    Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(url));

但它会留在电话屏幕上。我想要的是坚持我的应用活动。是否有可能在后台启动电话?或立即返回上一个活动。

2 个答案:

答案 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来观看挂机以停止后台线程或警报。