Android - 通话后留在应用程序中

时间:2015-08-28 14:59:37

标签: android call

我希望能够通过我的应用拨打电话。我了解如何通过应用程序拨打电话。问题是我不想在调用后重定向用户。

据我所知,此代码用于拨打电话:

Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + phonenumber));
startActivity(intent);

问题是用户然后被重定向到默认的呼叫者应用程序(不知道如何调用它)。我希望用户在通话激活时留在我的应用中。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

使用此代码,您不会从您的应用程序拨打电话,启动默认应用程序来拨打电话号码。如果您不想使用默认应用程序,则必须自己实现电话呼叫(顺便说一句,我不推荐,但如果需要,您可以这样做)。

Here是android的默认调用者应用程序,你必须做类似的事情(并按时间更新)。

此外,您可以通过将此intent-filter放入清单文件来注册任何其他应用程序进行的调用:

<activity
    android:name="com.test.Call"
    android:label="@string/makeCall" >
    <intent-filter>
        <action android:name="android.intent.action.CALL" />
        <category android:name="android.intent.category.DEFAULT" />
        <action android:name="android.intent.action.CALL_PRIVILEGED" />
        <data android:scheme="tel" />
    </intent-filter>
</activity>

答案 1 :(得分:1)

我想我自己找到了解决方案。

我用这段代码打电话:

Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + phonenumber));
startActivity(intent);

然后我做了一个调用状态监听器,监听调用发生。一旦呼叫开始,我就运行此代码再次打开我的应用程序活动:

Intent intent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra("IN_CALL", true);
context.startActivity(intent);

呼叫未被取消,仍然在后台运行。

我认为这是解决我问题的一个非常简单的解决方案,因为我不需要重写来电应用,我仍然可以使用来电应用的基本功能。就像挂断电话,把手机放到扬声器模式等等。