我有以下代码:
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上调用此函数。
由于
答案 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从已启动的活动中获取某些反馈。