diff options
author | Jean-Baptiste Queru <jbq@google.com> | 2010-06-15 15:08:01 -0700 |
---|---|---|
committer | Android Code Review <code-review@android.com> | 2010-06-15 15:08:01 -0700 |
commit | 30b980b2a8a37aa431c18b49fcb5ebcbee851f59 (patch) | |
tree | 8d7177db3892b7a1800e59bcd83556fe103a5297 | |
parent | 4378ee45439147aeeced31a0437df2da4f65a03c (diff) | |
parent | ef782f72b7c8a7563854c866298a394e4720b62f (diff) | |
download | base-30b980b2a8a37aa431c18b49fcb5ebcbee851f59.tar.gz |
Merge "Telephony : Dial emergency phone numbers when screen is locked"
-rw-r--r-- | phone/com/android/internal/policy/impl/KeyguardScreenCallback.java | 6 | ||||
-rw-r--r-- | phone/com/android/internal/policy/impl/LockPatternKeyguardView.java | 27 |
2 files changed, 33 insertions, 0 deletions
diff --git a/phone/com/android/internal/policy/impl/KeyguardScreenCallback.java b/phone/com/android/internal/policy/impl/KeyguardScreenCallback.java index 6bb6a45..1c4a462 100644 --- a/phone/com/android/internal/policy/impl/KeyguardScreenCallback.java +++ b/phone/com/android/internal/policy/impl/KeyguardScreenCallback.java @@ -63,6 +63,12 @@ public interface KeyguardScreenCallback extends KeyguardViewCallback { void takeEmergencyCallAction(); /** + * Take action to send an emergency call to a prefilled number. + * @param prefilled number + */ + void takeEmergencyCallAction(String number); + + /** * Report that the user had a failed attempt unlocking via the pattern. */ void reportFailedPatternAttempt(); diff --git a/phone/com/android/internal/policy/impl/LockPatternKeyguardView.java b/phone/com/android/internal/policy/impl/LockPatternKeyguardView.java index 85918fb..fded21e 100644 --- a/phone/com/android/internal/policy/impl/LockPatternKeyguardView.java +++ b/phone/com/android/internal/policy/impl/LockPatternKeyguardView.java @@ -36,6 +36,8 @@ import android.graphics.ColorFilter; import android.graphics.PixelFormat; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; +import android.net.Uri; +import android.telephony.PhoneNumberUtils; import android.os.SystemProperties; import android.text.TextUtils; import android.util.Log; @@ -245,9 +247,19 @@ public class LockPatternKeyguardView extends KeyguardViewBase } public void takeEmergencyCallAction() { + takeEmergencyCallAction(null); + } + + public void takeEmergencyCallAction(String number) { Intent intent = new Intent(ACTION_EMERGENCY_DIAL); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); + + // Add number if available + if (number != null) { + intent.setData(Uri.parse("tel:" + number)); + } + getContext().startActivity(intent); } @@ -436,6 +448,21 @@ public class LockPatternKeyguardView extends KeyguardViewBase } @Override + public boolean dispatchKeyEvent(KeyEvent event) { + if (DEBUG) Log.d(TAG, "dispatchKeyEvent for key=" + event.getKeyCode()); + + // Dial emergency number if screen is locked + if (event.getAction() == KeyEvent.ACTION_UP && (!mScreenOn || mMode == Mode.LockScreen)) { + char c = event.getNumber(); + if (PhoneNumberUtils.isReallyDialable(c)) { + if (DEBUG) Log.d(TAG, "starting emergency dialer with number=" + c); + mKeyguardScreenCallback.takeEmergencyCallAction(c + ""); + } + } + return super.dispatchKeyEvent(event); + } + + @Override public void verifyUnlock() { if (!isSecure()) { // non-secure keyguard screens are successfull by default |