如何知道android中的调用Activity何时完成

时间:2014-11-28 07:32:02

标签: android

我有以下代码:

public static void dialNumber(Context context, String phoneNumber)
{
    _logger.info("Calling " + phoneNumber);    
    Intent intent = new Intent(ACTION_CALL, Uri.fromParts("tel", phoneNumber, null));

    context.startActivity(intent);
}

这会启动对给定phoneNumber的调用。我希望在这个调用结束时加入一些逻辑。我怎样才能做到这一点。如何知道通话是否结束。 我尝试使用startActivityForResult,但我无法在Context上调用此函数。

由于

2 个答案:

答案 0 :(得分:1)

检查BroadcastReceiver接收方和系统的广播消息。这种事件(开始呼叫,结束呼叫等)通常通过广播消息发送。而且,如果你有接收器,你可以得到你想要的任何东西。例如,android.intent.action.PHONE_STATE可能适合您。 http://androidexample.com/Introduction_To_Broadcast_Receiver_Basics/index.php?view=article_discription&aid=60&aaid=85

我认为你可以通过intent.getExtras

获得你想要的信息
    public void onReceive(Context context, Intent intent) {

            intent.getExtras().getString(TelephonyManager.EXTRA_STATE);
            String stateStr = intent.getExtras().getString(TelephonyManager.EXTRA_STATE);
            String number = intent.getExtras().getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
            int state = 0;
            if(stateStr.equals(TelephonyManager.EXTRA_STATE_IDLE)){
                state = TelephonyManager.CALL_STATE_IDLE;
            }
            else if(stateStr.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)){
                state = TelephonyManager.CALL_STATE_OFFHOOK;
            }
            else if(stateStr.equals(TelephonyManager.EXTRA_STATE_RINGING)){
                state = TelephonyManager.CALL_STATE_RINGING;
            }

    }

答案 1 :(得分:0)

也许这值得一试。您可以使用startActivityForResult从已启动的活动中获取某些反馈。

Link to solved question