检测电话开始拨打电话的时间

时间:2014-03-20 13:40:46

标签: android phone-call telephony

如何检测电话开始拨打电话的时间。 我正在开发一个应用程序,我正在尝试以编程方式进行呼叫以及何时连接呼叫(振铃)。我想要回复一些回复(比如连接)。我正在尝试下面的代码,它能够拨打电话,但不知道如何获得响应。

Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"mobile no.")); 
             startActivity(callIntent);

提前感谢您的时间和考虑。

编辑:当拨出电话连接时(振铃状态),我想要取回通知。像吐司或任何其他相关的东西。可能吗?

3 个答案:

答案 0 :(得分:1)

您必须使用BroadcastReceiver来侦听调用事件,然后在触发时处理它。这是我在Google上找到的一个很好的教程。

http://looksok.wordpress.com/2013/04/13/android-broadcastreceiver-tutorial-detect-outgoing-phone-call-event/

答案 1 :(得分:1)

我知道它已经有一段时间,但我希望对仍在寻找解决方案的人有所帮助!

我最近不得不在一个类似的项目上工作,我需要捕获拨出呼叫的振铃状态,我能找到的唯一方法是使用本机拨号应用程序的隐藏Api。这只适用于android> 5.0因为api的变化。这是在Android 5.0.1上测试过的,并且像魅力一样。 (p.s.你需要一个有根设备才能工作,因为你需要将你的应用程序安装为系统应用程序(google how!),然后才能检测出局呼叫状态。)

对于记录,PhoneStateListener不能用于检测许多帖子中提到的传出呼叫状态。

首先,在清单文件

中添加此权限
<uses-permission android:name="android.permission.READ_PRECISE_PHONE_STATE" />

然后定义你broadcastreceiver,(这是一个示例代码!)

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.TelephonyManager;

public class MyBroadcastReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, final Intent intent)
    {
        switch (intent.getIntExtra("foreground_state", -2)) {
            case 0: //  PreciseCallState.PRECISE_CALL_STATE_IDLE:
                System.out.println("IDLE");
                break;
            case 3: //  PreciseCallState.PRECISE_CALL_STATE_DIALING:
                System.out.println("DIALING");
                break;
            case 4: //  PreciseCallState.PRECISE_CALL_STATE_ALERTING:
                System.out.println("ALERTING");
                break;
            case 1: //  PreciseCallState.PRECISE_CALL_STATE_ACTIVE:
                System.out.println("ACTIVE");
                break;
        }

    }
} 

我用它们的值替换了一些常量,因为我看到很多人不熟悉反射概念(为了方便)。 警报基本上是接收器实际响铃时的状态!这不包括通话设置时间!所以你可以通过使用

来获得该案例陈述中的时间
System.currentTimeMillis();

或您希望的其他格式!

答案 2 :(得分:0)

通过常规的非系统应用程序无法检测到 - 没有Android API。 我找不到办法,我在很长一段时间内用Google搜索解决方案: - (

没有办法(很遗憾,因为我需要它)来检测拨出电话开始振铃的时间。