am cdc490d3: am a56f8f7c: Merge "Fix EmergencyDialer button on devices without telephony hardware" into jb-mr1-dev
* commit 'cdc490d3e9b570b6111a841cb0125634eb57cd9f': Fix EmergencyDialer button on devices without telephony hardware
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
@@ -536,12 +505,6 @@ class KeyguardStatusViewManager {
|
||||
updateCarrierStateWithSimStatus(mSimState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPhoneStateChanged(int phoneState) {
|
||||
mPhoneState = phoneState;
|
||||
updateEmergencyCallButtonState(phoneState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSimStateChanged(IccCardConstants.State simState) {
|
||||
updateCarrierStateWithSimStatus(simState);
|
||||
|
||||
Reference in New Issue
Block a user