2015-08-28 84 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