summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Baptiste Queru <jbq@google.com>2010-06-15 15:08:01 -0700
committerAndroid Code Review <code-review@android.com>2010-06-15 15:08:01 -0700
commit30b980b2a8a37aa431c18b49fcb5ebcbee851f59 (patch)
tree8d7177db3892b7a1800e59bcd83556fe103a5297
parent4378ee45439147aeeced31a0437df2da4f65a03c (diff)
parentef782f72b7c8a7563854c866298a394e4720b62f (diff)
downloadbase-30b980b2a8a37aa431c18b49fcb5ebcbee851f59.tar.gz
Merge "Telephony : Dial emergency phone numbers when screen is locked"
-rw-r--r--phone/com/android/internal/policy/impl/KeyguardScreenCallback.java6
-rw-r--r--phone/com/android/internal/policy/impl/LockPatternKeyguardView.java27
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