diff options
author | Santos Cordon <santoscordon@google.com> | 2014-06-12 20:06:11 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-06-12 20:06:11 +0000 |
commit | eeea8461a6ad29ad245054fe05733e1257dd4657 (patch) | |
tree | 45393bc34d82f5b51834d368d32c621d5f0b1caa /InCallUI | |
parent | 890983704b65f09555efccb5c18b46ec2249b765 (diff) | |
parent | 1cd30263cca3ac89360caeb1520d570d03bf9ce0 (diff) |
am 0afa8f45: Support Add Call. (2/2)
* commit '0afa8f450a86517bac3009dbae94ed4973de4ddd':
Support Add Call. (2/2)
Diffstat (limited to 'InCallUI')
-rw-r--r-- | InCallUI/src/com/android/incallui/InCallServiceImpl.java | 2 | ||||
-rw-r--r-- | InCallUI/src/com/android/incallui/TelecommAdapter.java | 29 |
2 files changed, 30 insertions, 1 deletions
diff --git a/InCallUI/src/com/android/incallui/InCallServiceImpl.java b/InCallUI/src/com/android/incallui/InCallServiceImpl.java index e6085702b..c66ca8ed9 100644 --- a/InCallUI/src/com/android/incallui/InCallServiceImpl.java +++ b/InCallUI/src/com/android/incallui/InCallServiceImpl.java @@ -40,6 +40,7 @@ public class InCallServiceImpl extends InCallService { InCallPresenter inCallPresenter = InCallPresenter.getInstance(); inCallPresenter.setUp( getApplicationContext(), CallList.getInstance(), AudioModeProvider.getInstance()); + TelecommAdapter.getInstance().setContext(this); } /** {@inheritDoc} */ @@ -47,6 +48,7 @@ public class InCallServiceImpl extends InCallService { Log.v(this, "onDestroy"); // Tear down the InCall system TelecommAdapter.getInstance().setAdapter(null); + TelecommAdapter.getInstance().setContext(null); CallList.getInstance().clearOnDisconnect(); InCallPresenter.getInstance().tearDown(); } diff --git a/InCallUI/src/com/android/incallui/TelecommAdapter.java b/InCallUI/src/com/android/incallui/TelecommAdapter.java index 1828678f4..90b9d96b0 100644 --- a/InCallUI/src/com/android/incallui/TelecommAdapter.java +++ b/InCallUI/src/com/android/incallui/TelecommAdapter.java @@ -16,6 +16,9 @@ package com.android.incallui; +import android.content.ActivityNotFoundException; +import android.content.Context; +import android.content.Intent; import android.os.Looper; import android.telecomm.InCallAdapter; @@ -23,7 +26,10 @@ import com.google.common.base.Preconditions; /** Wrapper around {@link InCallAdapter} that only forwards calls to the adapter when it's valid. */ final class TelecommAdapter { + private static final String ADD_CALL_MODE_KEY = "add_call_mode"; + private static TelecommAdapter sInstance; + private Context mContext; private InCallAdapter mAdapter; static TelecommAdapter getInstance() { @@ -37,6 +43,10 @@ final class TelecommAdapter { private TelecommAdapter() { } + void setContext(Context context) { + mContext = context; + } + void setAdapter(InCallAdapter adapter) { mAdapter = adapter; } @@ -111,7 +121,24 @@ final class TelecommAdapter { } void addCall() { - Log.wtf(this, "addCall not implemented"); + if (mContext != null) { + Intent intent = new Intent(Intent.ACTION_DIAL); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + + // when we request the dialer come up, we also want to inform + // it that we're going through the "add call" option from the + // InCallScreen / PhoneUtils. + intent.putExtra(ADD_CALL_MODE_KEY, true); + try { + Log.d(this, "Sending the add Call intent"); + mContext.startActivity(intent); + } catch (ActivityNotFoundException e) { + // This is rather rare but possible. + // Note: this method is used even when the phone is encrypted. At that moment + // the system may not find any Activity which can accept this Intent. + Log.e(this, "Activity for adding calls isn't found.", e); + } + } } void playDtmfTone(String callId, char digit) { |