From 60435fc81dcaf758e919d904c4f83994eb31909b Mon Sep 17 00:00:00 2001 From: mariagpuyol Date: Thu, 28 Jan 2016 14:58:03 -0800 Subject: [PATCH] Add Emergency Info preference to user settings Bug: 26831671 Change-Id: I345fc9b9a54991de35c657e05cf3f08f21445f4c --- res/values/strings.xml | 4 +++ res/xml/user_settings.xml | 4 +++ .../android/settings/users/UserSettings.java | 28 +++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/res/values/strings.xml b/res/values/strings.xml index 399db32b6a7..95b4569a567 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -5305,6 +5305,10 @@ Turn on phone calls & SMS? Call and SMS history will be shared with this user. + + Emergency information + + Accessible through lock screen in the emergency dialer Allow apps and content diff --git a/res/xml/user_settings.xml b/res/xml/user_settings.xml index 4fefc105552..5944b3eb051 100644 --- a/res/xml/user_settings.xml +++ b/res/xml/user_settings.xml @@ -35,5 +35,9 @@ android:key="add_users_when_locked" android:title="@string/user_add_on_lockscreen_menu" android:summary="@string/user_add_on_lockscreen_menu_summary" /> + diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java index 1837a2c3af7..c9cdeb81246 100644 --- a/src/com/android/settings/users/UserSettings.java +++ b/src/com/android/settings/users/UserSettings.java @@ -27,6 +27,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; +import android.content.pm.ResolveInfo; import android.content.pm.UserInfo; import android.content.res.Resources; import android.graphics.Bitmap; @@ -42,6 +43,7 @@ import android.provider.Settings; import android.support.v14.preference.SwitchPreference; import android.support.v7.preference.Preference; import android.support.v7.preference.Preference.OnPreferenceClickListener; +import android.support.v7.preference.PreferenceCategory; import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceScreen; import android.util.Log; @@ -101,6 +103,10 @@ public class UserSettings extends SettingsPreferenceFragment private static final String KEY_USER_LIST = "user_list"; private static final String KEY_USER_ME = "user_me"; private static final String KEY_ADD_USER = "user_add"; + private static final String KEY_EMERGENCY_INFO = "emergency_info"; + private static final String KEY_LOCK_SCREEN_SETTINGS = "lock_screen_settings"; + + private static final String ACTION_EDIT_EMERGENCY_INFO = "android.settings.EDIT_EMERGENGY_INFO"; private static final int MENU_REMOVE_USER = Menu.FIRST; @@ -134,6 +140,7 @@ public class UserSettings extends SettingsPreferenceFragment private DimmableIconPreference mAddUser; private PreferenceGroup mLockScreenSettings; private RestrictedSwitchPreference mAddUserWhenLocked; + private Preference mEmergencyInfoPreference; private int mRemovingUserId = -1; private int mAddedUserId = 0; private boolean mAddingUser; @@ -229,6 +236,15 @@ public class UserSettings extends SettingsPreferenceFragment } mLockScreenSettings = (PreferenceGroup) findPreference("lock_screen_settings"); mAddUserWhenLocked = (RestrictedSwitchPreference) findPreference("add_users_when_locked"); + mEmergencyInfoPreference = findPreference(KEY_EMERGENCY_INFO); + if(emergencyInfoActivityPresent()) { + mEmergencyInfoPreference.setOnPreferenceClickListener(this); + } else { + // Remove this view if the emergency info package is not found. + PreferenceCategory lockScreenSettingsCategory = + (PreferenceCategory) findPreference(KEY_LOCK_SCREEN_SETTINGS); + lockScreenSettingsCategory.removePreference(mEmergencyInfoPreference); + } loadProfile(); setHasOptionsMenu(true); IntentFilter filter = new IntentFilter(Intent.ACTION_USER_REMOVED); @@ -598,6 +614,15 @@ public class UserSettings extends SettingsPreferenceFragment } } + private boolean emergencyInfoActivityPresent() { + Intent intent = new Intent(ACTION_EDIT_EMERGENCY_INFO).setPackage("com.android.emergency"); + List infos = getContext().getPackageManager().queryIntentActivities(intent, 0); + if (infos == null || infos.isEmpty()) { + return false; + } + return true; + } + private void removeUserNow() { if (mRemovingUserId == UserHandle.myUserId()) { removeThisUser(); @@ -917,6 +942,9 @@ public class UserSettings extends SettingsPreferenceFragment } else { onAddUserClicked(USER_TYPE_USER); } + } else if (pref == mEmergencyInfoPreference) { + Intent intent = new Intent(ACTION_EDIT_EMERGENCY_INFO); + startActivity(intent); } return false; }