diff --git a/res/values/strings.xml b/res/values/strings.xml
index 09cfa15..bb5b3da 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -5392,10 +5392,6 @@
     <string name="user_exit_guest_confirm_message">All apps and data in this session will be deleted.</string>
     <!-- Label for button in confirmation dialog when exiting guest session [CHAR LIMIT=35] -->
     <string name="user_exit_guest_dialog_remove">Remove</string>
-    <!-- Message of dialog to user to confirm that he understands that emergency information is shown in emergency dialer [CHAR LIMIT=none] -->
-    <string name="user_emergency_info_consent">Information you enter here can help first responders in an emergency. It is stored on your device only, but anyone can read it from the emergency dialer without unlocking your phone.</string>
-    <!-- Label for button in confirmation dialog when the user clicks on emergency information [CHAR LIMIT=35] -->
-    <string name="emergency_info_continue">Continue</string>
 
     <!-- Title of preference to enable calling[CHAR LIMIT=40] -->
     <string name="user_enable_calling">Turn on phone calls</string>
@@ -5413,6 +5409,8 @@
     <string name="user_enable_calling_and_sms_confirm_message">Call and SMS history will be shared with this user.</string>
     <!-- Title for the emergency info preference [CHAR LIMIT=40] -->
     <string name="emergency_info_title">Emergency information</string>
+    <!-- Description of the emergency info preference [CHAR LIMIT=none] -->
+    <string name="emergency_info_subtitle">Accessible by anyone from the emergency dialer without unlocking your phone</string>
 
     <!-- Application Restrictions screen title [CHAR LIMIT=45] -->
     <string name="application_restrictions">Allow apps and content</string>
diff --git a/res/xml/user_settings.xml b/res/xml/user_settings.xml
index b89f766..8d20f31 100644
--- a/res/xml/user_settings.xml
+++ b/res/xml/user_settings.xml
@@ -38,5 +38,6 @@
     </PreferenceCategory>
     <Preference
         android:key="emergency_info"
-        android:title="@string/emergency_info_title" />
+        android:title="@string/emergency_info_title"
+        android:summary="@string/emergency_info_subtitle"/>
 </PreferenceScreen>
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index d29e612..1c0260f 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -115,7 +115,6 @@
     private static final int DIALOG_NEED_LOCKSCREEN = 7;
     private static final int DIALOG_CONFIRM_EXIT_GUEST = 8;
     private static final int DIALOG_USER_PROFILE_EDITOR = 9;
-    private static final int DIALOG_EMERGENCY_INFO_CONSENT = 10;
 
     private static final int MESSAGE_UPDATE_LIST = 1;
     private static final int MESSAGE_SETUP_USER = 2;
@@ -609,22 +608,6 @@
                         android.os.Process.myUserHandle());
                 return dlg;
             }
-            case DIALOG_EMERGENCY_INFO_CONSENT : {
-                Dialog dlg = new AlertDialog.Builder(context)
-                        .setTitle(R.string.emergency_info_title)
-                        .setMessage(R.string.user_emergency_info_consent)
-                        .setPositiveButton(R.string.emergency_info_continue,
-                                new DialogInterface.OnClickListener() {
-                                    @Override
-                                    public void onClick(DialogInterface dialog, int which) {
-                                        Intent intent = new Intent(ACTION_EDIT_EMERGENCY_INFO);
-                                        startActivity(intent);
-                                    }
-                                })
-                        .setNegativeButton(android.R.string.cancel, null)
-                        .create();
-                return dlg;
-            }
             default:
                 return null;
         }
@@ -966,7 +949,8 @@
                 onAddUserClicked(USER_TYPE_USER);
             }
         } else if (pref == mEmergencyInfoPreference) {
-            showDialog(DIALOG_EMERGENCY_INFO_CONSENT);
+            Intent intent = new Intent(ACTION_EDIT_EMERGENCY_INFO);
+            startActivity(intent);
         }
         return false;
     }
