diff options
author | Hall Liu <hallliu@google.com> | 2016-06-02 10:32:08 -0700 |
---|---|---|
committer | gitbuildkicker <android-build@google.com> | 2016-11-03 12:18:56 -0700 |
commit | 4d1f4f1a776d24eb2727d1fef292b04a7491736c (patch) | |
tree | 847c81c0d72e4d3fbcc34c95946841f6eba9ad26 | |
parent | 22dafd205b4e7c1dc4a423f99696d77d383ec6d3 (diff) | |
download | base-marshmallow-mr3-release.tar.gz |
DO NOT MERGE Disable app pinning when emergency call button pressedandroid-6.0.1_r77marshmallow-mr3-release
Also disables app pinning when the "return to call" button is pressed
and brings up the in-call screen when app pinning is stopped if there is
an existing call.
Combination of ag/1091397 and ag/1085584 adapted for MNC.
Bug: 28558307
Bug: 28761672
Change-Id: I82ec4042bff387c845ce571b197a4a86e1dd5ec8
(cherry picked from commit 209414015ccdcabedbcb7b7f54860b07ed7733c1)
3 files changed, 18 insertions, 1 deletions
diff --git a/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java b/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java index cbf22c00d61c..93809af3e229 100644 --- a/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java +++ b/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java @@ -16,15 +16,18 @@ package com.android.keyguard; +import android.app.ActivityManagerNative; import android.app.ActivityOptions; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.os.PowerManager; +import android.os.RemoteException; import android.os.SystemClock; import android.os.UserHandle; import android.telecom.TelecomManager; import android.util.AttributeSet; +import android.util.Slog; import android.view.View; import android.widget.Button; @@ -46,6 +49,8 @@ public class EmergencyButton extends Button { | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | Intent.FLAG_ACTIVITY_CLEAR_TOP); + private static final String LOG_TAG = "EmergencyButton"; + KeyguardUpdateMonitorCallback mInfoCallback = new KeyguardUpdateMonitorCallback() { @Override @@ -121,6 +126,11 @@ public class EmergencyButton extends Button { // TODO: implement a shorter timeout once new PowerManager API is ready. // should be the equivalent to the old userActivity(EMERGENCY_CALL_TIMEOUT) mPowerManager.userActivity(SystemClock.uptimeMillis(), true); + try { + ActivityManagerNative.getDefault().stopLockTaskMode(); + } catch (RemoteException e) { + Slog.w(LOG_TAG, "Failed to stop app pinning"); + } if (isInCall()) { resumeCall(); if (mEmergencyButtonCallback != null) { diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 1c1a6b44292a..701cb8471da2 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -213,6 +213,7 @@ import android.os.UpdateLock; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; +import android.telecom.TelecomManager; import android.text.format.DateUtils; import android.text.format.Time; import android.util.AtomicFile; @@ -9189,6 +9190,10 @@ public final class ActivityManagerService extends ActivityManagerNative mStackSupervisor.setLockTaskModeLocked(null, ActivityManager.LOCK_TASK_MODE_NONE, "stopLockTask", true); } + TelecomManager tm = (TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE); + if (tm != null) { + tm.showInCallScreen(false); + } } finally { Binder.restoreCallingIdentity(ident); } diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 17a86caccc4b..29f8d6fce3a8 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -3868,7 +3868,9 @@ public final class ActivityStackSupervisor implements DisplayListener { } void showLockTaskToast() { - mLockTaskNotify.showToast(mLockTaskModeState); + if (mLockTaskNotify != null) { + mLockTaskNotify.showToast(mLockTaskModeState); + } } void showLockTaskEscapeMessageLocked(TaskRecord task) { |