From 7dac366a7f72e3d3f0c7e26616ec0ee55efe1fcd Mon Sep 17 00:00:00 2001 From: Hall Liu Date: Fri, 27 May 2016 13:30:09 -0700 Subject: [PATCH] Disable app pinning when emergency call button pressed 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. Bug: 28558307 Change-Id: I7672123bfa6ba6b5e960bd5166876c50425d3f76 --- .../Keyguard/src/com/android/keyguard/EmergencyButton.java | 10 ++++++++++ .../java/com/android/server/am/ActivityManagerService.java | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java b/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java index 40c11cfcffc1..8d411453b5ae 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; @@ -47,6 +50,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 @@ -122,6 +127,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().stopSystemLockTaskMode(); + } 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 eb4391e03d4d..1538fa14386f 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -199,6 +199,7 @@ import android.provider.Settings; import android.service.voice.IVoiceInteractionSession; import android.service.voice.VoiceInteractionManagerInternal; import android.service.voice.VoiceInteractionSession; +import android.telecom.TelecomManager; import android.text.format.DateUtils; import android.text.format.Time; import android.text.style.SuggestionSpan; @@ -10129,6 +10130,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); } -- 2.11.0