summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJim Miller <jaggies@google.com>2012-09-06 18:45:18 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-09-06 18:45:18 -0700
commita56f8f7ca2298f1516115be60e07a8193737293e (patch)
tree2643aa259c8fa8c17ee2d3ee876d91104cccd92e
parent2b0442f33029c6b6cf1247a1633a97f5908d6cab (diff)
parent47df44aad773fb2a46d4c07e20278c7d8c0b16be (diff)
downloadframeworks_base-a56f8f7ca2298f1516115be60e07a8193737293e.zip
frameworks_base-a56f8f7ca2298f1516115be60e07a8193737293e.tar.gz
frameworks_base-a56f8f7ca2298f1516115be60e07a8193737293e.tar.bz2
Merge "Fix EmergencyDialer button on devices without telephony hardware" into jb-mr1-dev
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java33
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityModel.java3
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java54
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardStatusView.java1
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardStatusViewManager.java39
5 files changed, 49 insertions, 81 deletions
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java
index 7e148b3..00bc9be 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java
@@ -61,12 +61,6 @@ public class KeyguardHostView extends KeyguardViewBase {
static final int APPWIDGET_HOST_ID = 0x4B455947;
private static final String KEYGUARD_WIDGET_PREFS = "keyguard_widget_prefs";
- // time after launching EmergencyDialer before the screen goes blank.
- private static final int EMERGENCY_CALL_TIMEOUT = 10000;
-
- // intent action for launching emergency dialer activity.
- static final String ACTION_EMERGENCY_DIAL = "com.android.phone.EmergencyDialer.DIAL";
-
private static final String TAG = "KeyguardViewHost";
private static final int SECURITY_SELECTOR_ID = R.id.keyguard_selector_view;
@@ -80,7 +74,6 @@ public class KeyguardHostView extends KeyguardViewBase {
private AppWidgetHost mAppWidgetHost;
private KeyguardWidgetPager mAppWidgetContainer;
private ViewFlipper mViewFlipper;
- private Button mEmergencyDialerButton;
private boolean mEnableMenuKey;
private boolean mIsVerifyUnlockOnly;
private boolean mEnableFallback; // TODO: This should get the value from KeyguardPatternView
@@ -146,14 +139,6 @@ public class KeyguardHostView extends KeyguardViewBase {
Log.v("*********", "Can't find view id " + mViewIds[i]);
}
}
-
- // Enable emergency dialer button
- mEmergencyDialerButton = (Button) findViewById(R.id.emergency_call_button);
- mEmergencyDialerButton.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- takeEmergencyCallAction();
- }
- });
}
void setLockPatternUtils(LockPatternUtils utils) {
@@ -229,22 +214,6 @@ public class KeyguardHostView extends KeyguardViewBase {
};
- /**
- * Shows the emergency dialer or returns the user to the existing call.
- */
- public void takeEmergencyCallAction() {
- mCallback.userActivity(EMERGENCY_CALL_TIMEOUT);
- if (TelephonyManager.getDefault().getCallState()
- == TelephonyManager.CALL_STATE_OFFHOOK) {
- mLockPatternUtils.resumeCall();
- } else {
- Intent intent = new Intent(ACTION_EMERGENCY_DIAL);
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
- | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
- getContext().startActivity(intent);
- }
- }
-
private void showDialog(String title, String message) {
final AlertDialog dialog = new AlertDialog.Builder(mContext)
.setTitle(title)
@@ -530,12 +499,14 @@ public class KeyguardHostView extends KeyguardViewBase {
public void onScreenTurnedOn() {
if (DEBUG) Log.d(TAG, "screen on");
showSecurityScreen(mCurrentSecurityId);
+ getSecurityView(mCurrentSecurityId).onResume();
}
@Override
public void onScreenTurnedOff() {
if (DEBUG) Log.d(TAG, "screen off");
showSecurityScreen(SECURITY_SELECTOR_ID);
+ getSecurityView(mCurrentSecurityId).onPause();
}
@Override
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityModel.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityModel.java
index a19b35d..75c4a7c 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityModel.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSecurityModel.java
@@ -69,7 +69,8 @@ public class KeyguardSecurityModel {
SecurityMode mode = SecurityMode.None;
if (simState == IccCardConstants.State.PIN_REQUIRED) {
mode = SecurityMode.SimPin;
- } else if (simState == IccCardConstants.State.PUK_REQUIRED) {
+ } else if (simState == IccCardConstants.State.PUK_REQUIRED
+ && mLockPatternUtils.isPukUnlockScreenEnable()) {
mode = SecurityMode.SimPuk;
} else {
final int security = mLockPatternUtils.getKeyguardStoredPasswordQuality();
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java
index 28f5e8c..95772af 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java
@@ -25,6 +25,7 @@ import android.content.Intent;
import android.os.RemoteException;
import android.os.UserHandle;
import android.provider.MediaStore;
+import android.telephony.TelephonyManager;
import android.util.AttributeSet;
import android.util.Log;
import android.util.Slog;
@@ -33,6 +34,7 @@ import android.widget.Button;
import android.widget.LinearLayout;
import com.android.internal.telephony.IccCardConstants;
+import com.android.internal.telephony.IccCardConstants.State;
import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.multiwaveview.GlowPadView;
import com.android.internal.widget.multiwaveview.GlowPadView.OnTriggerListener;
@@ -43,6 +45,9 @@ public class KeyguardSelectorView extends LinearLayout implements KeyguardSecuri
private static final String TAG = "SecuritySelectorView";
private static final String ASSIST_ICON_METADATA_NAME =
"com.android.systemui.action_assist_icon";
+ private static final int EMERGENCY_CALL_TIMEOUT = 10000; // screen timeout after starting e.d.
+ static final String ACTION_EMERGENCY_DIAL = "com.android.phone.EmergencyDialer.DIAL";
+
private KeyguardSecurityCallback mCallback;
private GlowPadView mGlowPadView;
private Button mEmergencyCallButton;
@@ -98,9 +103,19 @@ public class KeyguardSelectorView extends LinearLayout implements KeyguardSecuri
};
- KeyguardUpdateMonitorCallback mInfoCallback = new KeyguardUpdateMonitorCallback() {
+ private void updateEmergencyCallButton(State simState, int phoneState) {
+ if (mEmergencyCallButton != null) {
+ boolean en = mLockPatternUtils.isEmergencyCallCapable()
+ || (phoneState == TelephonyManager.CALL_STATE_OFFHOOK); // voice call in progress
+ if (en && KeyguardUpdateMonitor.isSimLocked(simState)) {
+ // Some countries can't handle emergency calls while SIM is locked.
+ en = mLockPatternUtils.isEmergencyCallEnabledWhileSimLocked();
+ }
+ mLockPatternUtils.updateEmergencyCallButtonState(mEmergencyCallButton, phoneState, en);
+ }
+ }
- private boolean mEmergencyDialerDisableBecauseSimLocked;
+ KeyguardUpdateMonitorCallback mInfoCallback = new KeyguardUpdateMonitorCallback() {
@Override
public void onDevicePolicyManagerStateChanged() {
@@ -108,19 +123,15 @@ public class KeyguardSelectorView extends LinearLayout implements KeyguardSecuri
}
@Override
- public void onSimStateChanged(IccCardConstants.State simState) {
- // Some carriers aren't capable of handling emergency calls while the SIM is locked
- mEmergencyDialerDisableBecauseSimLocked = KeyguardUpdateMonitor.isSimLocked(simState)
- && !mLockPatternUtils.isEmergencyCallEnabledWhileSimLocked();
+ public void onSimStateChanged(State simState) {
+ int phoneState = KeyguardUpdateMonitor.getInstance(mContext).getPhoneState();
+ updateEmergencyCallButton(simState, phoneState);
updateTargets();
}
void onPhoneStateChanged(int phoneState) {
- if (mEmergencyCallButton != null) {
- mLockPatternUtils.isEmergencyCallEnabledWhileSimLocked();
- mLockPatternUtils.updateEmergencyCallButtonState(mEmergencyCallButton,
- phoneState, !mEmergencyDialerDisableBecauseSimLocked);
- }
+ State simState = KeyguardUpdateMonitor.getInstance(mContext).getSimState();
+ updateEmergencyCallButton(simState, phoneState);
};
};
@@ -149,9 +160,30 @@ public class KeyguardSelectorView extends LinearLayout implements KeyguardSecuri
mGlowPadView = (GlowPadView) findViewById(R.id.glow_pad_view);
mGlowPadView.setOnTriggerListener(mOnTriggerListener);
mEmergencyCallButton = (Button) findViewById(R.id.emergency_call_button);
+ mEmergencyCallButton.setOnClickListener(new OnClickListener() {
+ public void onClick(View v) {
+ takeEmergencyCallAction();
+ }
+ });
updateTargets();
}
+ /**
+ * Shows the emergency dialer or returns the user to the existing call.
+ */
+ public void takeEmergencyCallAction() {
+ mCallback.userActivity(EMERGENCY_CALL_TIMEOUT);
+ if (TelephonyManager.getDefault().getCallState()
+ == TelephonyManager.CALL_STATE_OFFHOOK) {
+ mLockPatternUtils.resumeCall();
+ } else {
+ Intent intent = new Intent(ACTION_EMERGENCY_DIAL);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
+ getContext().startActivity(intent);
+ }
+ }
+
public boolean isTargetPresent(int resId) {
return mGlowPadView.getTargetPosition(resId) != -1;
}
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardStatusView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardStatusView.java
index 481e9ad..5704425 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardStatusView.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardStatusView.java
@@ -21,6 +21,7 @@ import android.util.AttributeSet;
import android.widget.GridLayout;
public class KeyguardStatusView extends GridLayout {
+ @SuppressWarnings("unused")
private KeyguardStatusViewManager mStatusViewManager;
public KeyguardStatusView(Context context) {
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardStatusViewManager.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardStatusViewManager.java
index 20fad0b..e325f94 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardStatusViewManager.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardStatusViewManager.java
@@ -32,11 +32,10 @@ import android.text.TextUtils;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.View;
-import android.widget.Button;
import android.widget.TextView;
/***
- * Manages a number of views inside of LockScreen layouts. See below for a list of widgets
+ * Manages a number of views inside of the given layout. See below for a list of widgets.
*/
class KeyguardStatusViewManager {
private static final boolean DEBUG = false;
@@ -92,21 +91,12 @@ class KeyguardStatusViewManager {
private boolean mShowingStatus;
private CharSequence mPlmn;
private CharSequence mSpn;
- protected int mPhoneState;
private DigitalClock mDigitalClock;
protected boolean mBatteryCharged;
protected boolean mBatteryIsLow;
- private boolean mEmergencyButtonEnabledBecauseSimLocked;
- private Button mEmergencyCallButton;
- private boolean mEmergencyCallButtonEnabledInScreen;
/**
- *
* @param view the containing view of all widgets
- * @param updateMonitor the update monitor to use
- * @param lockPatternUtils lock pattern util object
- * @param callback used to invoke emergency dialer
- * @param emergencyButtonEnabledInScreen whether emergency button is enabled by default
*/
public KeyguardStatusViewManager(View view) {
if (DEBUG) Log.v(TAG, "KeyguardStatusViewManager()");
@@ -364,7 +354,6 @@ class KeyguardStatusViewManager {
CharSequence carrierText = null;
int carrierHelpTextId = 0;
- mEmergencyButtonEnabledBecauseSimLocked = false;
mStatus = getStatusForIccState(simState);
mSimState = simState;
switch (mStatus) {
@@ -394,7 +383,6 @@ class KeyguardStatusViewManager {
carrierText = getContext().getText(
R.string.lockscreen_permanent_disabled_sim_message_short);
carrierHelpTextId = R.string.lockscreen_permanent_disabled_sim_instructions;
- mEmergencyButtonEnabledBecauseSimLocked = true;
break;
case SimMissingLocked:
@@ -402,33 +390,25 @@ class KeyguardStatusViewManager {
getContext().getText(R.string.lockscreen_missing_sim_message_short),
mPlmn);
carrierHelpTextId = R.string.lockscreen_missing_sim_instructions;
- mEmergencyButtonEnabledBecauseSimLocked = true;
break;
case SimLocked:
carrierText = makeCarrierStringOnEmergencyCapable(
getContext().getText(R.string.lockscreen_sim_locked_message),
mPlmn);
- mEmergencyButtonEnabledBecauseSimLocked = true;
break;
case SimPukLocked:
carrierText = makeCarrierStringOnEmergencyCapable(
getContext().getText(R.string.lockscreen_sim_puk_locked_message),
mPlmn);
- if (!mLockPatternUtils.isPukUnlockScreenEnable()) {
- // This means we're showing the PUK unlock screen
- mEmergencyButtonEnabledBecauseSimLocked = true;
- }
break;
}
setCarrierText(carrierText);
setCarrierHelpText(carrierHelpTextId);
- updateEmergencyCallButtonState(mPhoneState);
}
-
/*
* Add emergencyCallMessage to carrier string only if phone supports emergency calls.
*/
@@ -500,17 +480,6 @@ class KeyguardStatusViewManager {
}
}
- private void updateEmergencyCallButtonState(int phoneState) {
- if (mEmergencyCallButton != null) {
- boolean enabledBecauseSimLocked =
- mLockPatternUtils.isEmergencyCallEnabledWhileSimLocked()
- && mEmergencyButtonEnabledBecauseSimLocked;
- boolean shown = mEmergencyCallButtonEnabledInScreen || enabledBecauseSimLocked;
- mLockPatternUtils.updateEmergencyCallButtonState(mEmergencyCallButton,
- phoneState, shown);
- }
- }
-
private KeyguardUpdateMonitorCallback mInfoCallback = new KeyguardUpdateMonitorCallback() {
@Override
@@ -537,12 +506,6 @@ class KeyguardStatusViewManager {
}
@Override
- public void onPhoneStateChanged(int phoneState) {
- mPhoneState = phoneState;
- updateEmergencyCallButtonState(phoneState);
- }
-
- @Override
public void onSimStateChanged(IccCardConstants.State simState) {
updateCarrierStateWithSimStatus(simState);
}