2015-08-28 108 views
0

我希望能够通过我的应用程序拨打电话。我了解如何通过应用拨打电话。问题是我不想在呼叫完成后重定向用户。Android - 拨打电话后留在应用程序中

据我理解这段代码是用来拨打电话:

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

的问题是,用户然后被重定向到一个默认的来电者的应用程序(不知道如何其所谓的)。我希望用户在通话激活时留在我的应用程序中。

有什么建议吗?

回答

2

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

Here是android的默认调用者应用程序,您必须做出类似的事情(并且使其与时间保持一致)。

您也可以呼叫任何其它器件的应用通过把这个意图过滤器在你的清单文件提出注册:

<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

我想我找到了解决办法我自己。

我用这个代码来拨打电话:

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); 

该调用未取消,仍然在后台运行。

我认为这是一个非常简单的解决方案,因为我不需要重写调用者应用程序,我仍然可以使用调用者应用程序的基本功能。像挂断,把我的手机扬声器模式等

+0

哦,我是误解你,我想你想在通话期间留在你的应用程序 – bendaf

+0

这是最初的计划,但使自定义来电应用程序似乎进步为了我。使用此代码即可通过默认的来电者拨打电话,用户不会离开我的应用程序,并且可以通过我的应用程序与来电进行交互。 – TDX

+0

哦,比我不明白你为什么收回管道,因为你原来的问题我有答案。 – bendaf