summaryrefslogtreecommitdiff
path: root/java/com/android/dialer
diff options
context:
space:
mode:
authorwangqi <wangqi@google.com>2017-08-31 15:30:58 -0700
committerEric Erfanian <erfanian@google.com>2017-09-06 16:45:36 -0700
commitfff6fcfc6887e113e25cfb7a8e07b8b73af0c62c (patch)
treef78e96458378763d9d38f158e5cc374a499d0494 /java/com/android/dialer
parentf370b7dc3b7218c20fc55d08902869be31d3cab6 (diff)
Use TelecomManager#isInManagedCall starting from O.
The TelecomManager#isInCall method returns true anytime the user is in a call. Starting in O, the APIs include support for self-managed ConnectionServices so that other apps like Duo can tell Telecom about its calls. So, if the user is in a Duo call, isInCall would return true. Dialer uses this to determine whether to show the "return to call in progress" when Dialer is launched. Instead, Dialer should use TelecomManager#isInManagedCall, which only returns true if the device is in a managed call which Dialer would know about. Bug: 36991070 Test: none PiperOrigin-RevId: 167200903 Change-Id: I12ac7b893dcbfa2fc842ca5ab356fbbc490a098b
Diffstat (limited to 'java/com/android/dialer')
-rw-r--r--java/com/android/dialer/app/DialtactsActivity.java2
-rw-r--r--java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java2
-rw-r--r--java/com/android/dialer/callcomposer/CallComposerActivity.java2
-rw-r--r--java/com/android/dialer/dialpadview/DialpadFragment.java2
-rw-r--r--java/com/android/dialer/telecom/TelecomUtil.java22
5 files changed, 24 insertions, 6 deletions
diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java
index 3e6b50cae..a4c075c51 100644
--- a/java/com/android/dialer/app/DialtactsActivity.java
+++ b/java/com/android/dialer/app/DialtactsActivity.java
@@ -1410,7 +1410,7 @@ public class DialtactsActivity extends TransactionSafeActivity
}
private boolean phoneIsInUse() {
- return TelecomUtil.isInCall(this);
+ return TelecomUtil.isInManagedCall(this);
}
private boolean canIntentBeHandled(Intent intent) {
diff --git a/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java b/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
index de4e1cc4a..685357ace 100644
--- a/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
+++ b/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
@@ -516,7 +516,7 @@ public class VoicemailPlaybackPresenter
mView.disableUiElements();
mIsPrepared = false;
- if (mContext != null && TelecomUtil.isInCall(mContext)) {
+ if (mContext != null && TelecomUtil.isInManagedCall(mContext)) {
handleError(new IllegalStateException("Cannot play voicemail when call is in progress"));
return;
}
diff --git a/java/com/android/dialer/callcomposer/CallComposerActivity.java b/java/com/android/dialer/callcomposer/CallComposerActivity.java
index fa380cc19..4a6cdbbd8 100644
--- a/java/com/android/dialer/callcomposer/CallComposerActivity.java
+++ b/java/com/android/dialer/callcomposer/CallComposerActivity.java
@@ -438,7 +438,7 @@ public class CallComposerActivity extends AppCompatActivity
maybeShowPrivacyToast(data);
if (data.hasImageData()
&& ConfigProviderBindings.get(this).getBoolean("enable_delayed_ec_images", true)
- && !TelecomUtil.isInCall(this)) {
+ && !TelecomUtil.isInManagedCall(this)) {
timeoutHandler.postDelayed(placeTelecomCallRunnable, getRCSTimeoutMillis());
startActivity(
CallPendingActivity.getIntent(
diff --git a/java/com/android/dialer/dialpadview/DialpadFragment.java b/java/com/android/dialer/dialpadview/DialpadFragment.java
index e22250c6f..86a83796e 100644
--- a/java/com/android/dialer/dialpadview/DialpadFragment.java
+++ b/java/com/android/dialer/dialpadview/DialpadFragment.java
@@ -1278,7 +1278,7 @@ public class DialpadFragment extends Fragment
* or ringing or dialing, or on hold).
*/
private boolean isPhoneInUse() {
- return getContext() != null && TelecomUtil.isInCall(getContext());
+ return getContext() != null && TelecomUtil.isInManagedCall(getContext());
}
/** @return true if the phone is a CDMA phone type */
diff --git a/java/com/android/dialer/telecom/TelecomUtil.java b/java/com/android/dialer/telecom/TelecomUtil.java
index 573bfe2d9..8ff4b3967 100644
--- a/java/com/android/dialer/telecom/TelecomUtil.java
+++ b/java/com/android/dialer/telecom/TelecomUtil.java
@@ -21,6 +21,8 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
import android.provider.CallLog.Calls;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
@@ -140,7 +142,11 @@ public abstract class TelecomUtil {
return new ArrayList<>();
}
- public static boolean isInCall(Context context) {
+ /**
+ * Returns true if there is a dialer managed call in progress. Self managed calls starting from O
+ * are not included.
+ */
+ public static boolean isInManagedCall(Context context) {
return instance.isInCall(context);
}
@@ -234,7 +240,19 @@ public abstract class TelecomUtil {
public boolean isInCall(Context context) {
if (hasReadPhoneStatePermission(context)) {
- return getTelecomManager(context).isInCall();
+ // The TelecomManager#isInCall method returns true anytime the user is in a call.
+ // Starting in O, the APIs include support for self-managed ConnectionServices so that other
+ // apps like Duo can tell Telecom about its calls. So, if the user is in a Duo call,
+ // isInCall would return true.
+ // Dialer uses this to determine whether to show the "return to call in progress" when
+ // Dialer is launched.
+ // Instead, Dialer should use TelecomManager#isInManagedCall, which only returns true if the
+ // device is in a managed call which Dialer would know about.
+ if (VERSION.SDK_INT >= VERSION_CODES.O) {
+ return getTelecomManager(context).isInManagedCall();
+ } else {
+ return getTelecomManager(context).isInCall();
+ }
}
return false;
}