Loading packages/SettingsLib/EmergencyNumber/src/com/android/settingslib/emergencynumber/EmergencyNumberUtils.java +31 −4 Original line number Diff line number Diff line Loading @@ -19,9 +19,11 @@ package com.android.settingslib.emergencynumber; import static android.telephony.emergency.EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE; import static android.telephony.emergency.EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_POLICE; import android.content.ContentResolver; import android.content.Context; import android.content.pm.PackageManager; import android.provider.Settings; import android.net.Uri; import android.os.Bundle; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.emergency.EmergencyNumber; Loading @@ -40,7 +42,16 @@ import java.util.Map; */ public class EmergencyNumberUtils { private static final String TAG = "EmergencyNumberUtils"; private static final String EMERGENCY_GESTURE_CALL_NUMBER = "emergency_gesture_call_number"; public static final Uri EMERGENCY_NUMBER_OVERRIDE_AUTHORITY = new Uri.Builder().scheme( ContentResolver.SCHEME_CONTENT) .authority("com.android.emergency.numbers") .build(); public static final String METHOD_NAME_GET_EMERGENCY_NUMBER_OVERRIDE = "GET_EMERGENCY_NUMBER_OVERRIDE"; public static final String METHOD_NAME_SET_EMERGENCY_NUMBER_OVERRIDE = "SET_EMERGENCY_NUMBER_OVERRIDE"; public static final String EMERGENCY_GESTURE_CALL_NUMBER = "emergency_gesture_call_number"; @VisibleForTesting static final String FALL_BACK_NUMBER = "112"; Loading Loading @@ -77,12 +88,28 @@ public class EmergencyNumberUtils { * #getDefaultPoliceNumber()}). */ public String getPoliceNumber() { final String userProvidedNumber = Settings.Secure.getString(mContext.getContentResolver(), EMERGENCY_GESTURE_CALL_NUMBER); final String userProvidedNumber = getEmergencyNumberOverride(); return TextUtils.isEmpty(userProvidedNumber) ? getDefaultPoliceNumber() : userProvidedNumber; } /** * Sets device-local emergency number override */ public void setEmergencyNumberOverride(String number) { final Bundle bundle = new Bundle(); bundle.putString(EMERGENCY_GESTURE_CALL_NUMBER, number); mContext.getContentResolver().call(EMERGENCY_NUMBER_OVERRIDE_AUTHORITY, METHOD_NAME_SET_EMERGENCY_NUMBER_OVERRIDE, null /* args */, bundle); } private String getEmergencyNumberOverride() { final Bundle bundle = mContext.getContentResolver().call( EMERGENCY_NUMBER_OVERRIDE_AUTHORITY, METHOD_NAME_GET_EMERGENCY_NUMBER_OVERRIDE, null /* args */, null /* bundle */); return bundle == null ? null : bundle.getString(EMERGENCY_GESTURE_CALL_NUMBER); } private List<EmergencyNumber> getPromotedEmergencyNumbers(int categories) { // TODO(b/171542607): Use platform API when its bug is fixed. Map<Integer, List<EmergencyNumber>> allLists = filterEmergencyNumbersByCategories( Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/emergencynumber/EmergencyNumberUtilsTest.java +14 −7 Original line number Diff line number Diff line Loading @@ -18,15 +18,21 @@ package com.android.settingslib.emergencynumber; import static android.telephony.emergency.EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_POLICE; import static com.android.settingslib.emergencynumber.EmergencyNumberUtils.EMERGENCY_GESTURE_CALL_NUMBER; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import android.content.ContentResolver; import android.content.Context; import android.content.pm.PackageManager; import android.provider.Settings; import android.net.Uri; import android.os.Bundle; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.emergency.EmergencyNumber; Loading @@ -38,7 +44,6 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import java.util.ArrayList; import java.util.List; Loading @@ -55,12 +60,15 @@ public class EmergencyNumberUtilsTest { private PackageManager mPackageManager; @Mock private TelephonyManager mTelephonyManager; @Mock ContentResolver mContentResolver; private EmergencyNumberUtils mUtils; @Before public void setup() { MockitoAnnotations.initMocks(this); when(mContext.getPackageManager()).thenReturn(mPackageManager); when(mContext.getContentResolver()).thenReturn(mContentResolver); } @Test Loading Loading @@ -89,11 +97,10 @@ public class EmergencyNumberUtilsTest { when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager); addEmergencyNumberToTelephony(); ContentResolver resolver = RuntimeEnvironment.application.getContentResolver(); when(mContext.getContentResolver()).thenReturn(resolver); Settings.Secure.putString(resolver, Settings.Secure.EMERGENCY_GESTURE_CALL_NUMBER, USER_OVERRIDE_EMERGENCY_NUMBER); Bundle bundle = new Bundle(); bundle.putString(EMERGENCY_GESTURE_CALL_NUMBER, USER_OVERRIDE_EMERGENCY_NUMBER); when(mContentResolver.call(any(Uri.class), anyString(), nullable(String.class), nullable( Bundle.class))).thenReturn(bundle); mUtils = new EmergencyNumberUtils(mContext); assertThat(mUtils.getPoliceNumber()).isEqualTo(USER_OVERRIDE_EMERGENCY_NUMBER); Loading Loading
packages/SettingsLib/EmergencyNumber/src/com/android/settingslib/emergencynumber/EmergencyNumberUtils.java +31 −4 Original line number Diff line number Diff line Loading @@ -19,9 +19,11 @@ package com.android.settingslib.emergencynumber; import static android.telephony.emergency.EmergencyNumber.EMERGENCY_NUMBER_SOURCE_DATABASE; import static android.telephony.emergency.EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_POLICE; import android.content.ContentResolver; import android.content.Context; import android.content.pm.PackageManager; import android.provider.Settings; import android.net.Uri; import android.os.Bundle; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.emergency.EmergencyNumber; Loading @@ -40,7 +42,16 @@ import java.util.Map; */ public class EmergencyNumberUtils { private static final String TAG = "EmergencyNumberUtils"; private static final String EMERGENCY_GESTURE_CALL_NUMBER = "emergency_gesture_call_number"; public static final Uri EMERGENCY_NUMBER_OVERRIDE_AUTHORITY = new Uri.Builder().scheme( ContentResolver.SCHEME_CONTENT) .authority("com.android.emergency.numbers") .build(); public static final String METHOD_NAME_GET_EMERGENCY_NUMBER_OVERRIDE = "GET_EMERGENCY_NUMBER_OVERRIDE"; public static final String METHOD_NAME_SET_EMERGENCY_NUMBER_OVERRIDE = "SET_EMERGENCY_NUMBER_OVERRIDE"; public static final String EMERGENCY_GESTURE_CALL_NUMBER = "emergency_gesture_call_number"; @VisibleForTesting static final String FALL_BACK_NUMBER = "112"; Loading Loading @@ -77,12 +88,28 @@ public class EmergencyNumberUtils { * #getDefaultPoliceNumber()}). */ public String getPoliceNumber() { final String userProvidedNumber = Settings.Secure.getString(mContext.getContentResolver(), EMERGENCY_GESTURE_CALL_NUMBER); final String userProvidedNumber = getEmergencyNumberOverride(); return TextUtils.isEmpty(userProvidedNumber) ? getDefaultPoliceNumber() : userProvidedNumber; } /** * Sets device-local emergency number override */ public void setEmergencyNumberOverride(String number) { final Bundle bundle = new Bundle(); bundle.putString(EMERGENCY_GESTURE_CALL_NUMBER, number); mContext.getContentResolver().call(EMERGENCY_NUMBER_OVERRIDE_AUTHORITY, METHOD_NAME_SET_EMERGENCY_NUMBER_OVERRIDE, null /* args */, bundle); } private String getEmergencyNumberOverride() { final Bundle bundle = mContext.getContentResolver().call( EMERGENCY_NUMBER_OVERRIDE_AUTHORITY, METHOD_NAME_GET_EMERGENCY_NUMBER_OVERRIDE, null /* args */, null /* bundle */); return bundle == null ? null : bundle.getString(EMERGENCY_GESTURE_CALL_NUMBER); } private List<EmergencyNumber> getPromotedEmergencyNumbers(int categories) { // TODO(b/171542607): Use platform API when its bug is fixed. Map<Integer, List<EmergencyNumber>> allLists = filterEmergencyNumbersByCategories( Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/emergencynumber/EmergencyNumberUtilsTest.java +14 −7 Original line number Diff line number Diff line Loading @@ -18,15 +18,21 @@ package com.android.settingslib.emergencynumber; import static android.telephony.emergency.EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_POLICE; import static com.android.settingslib.emergencynumber.EmergencyNumberUtils.EMERGENCY_GESTURE_CALL_NUMBER; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import android.content.ContentResolver; import android.content.Context; import android.content.pm.PackageManager; import android.provider.Settings; import android.net.Uri; import android.os.Bundle; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.emergency.EmergencyNumber; Loading @@ -38,7 +44,6 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import java.util.ArrayList; import java.util.List; Loading @@ -55,12 +60,15 @@ public class EmergencyNumberUtilsTest { private PackageManager mPackageManager; @Mock private TelephonyManager mTelephonyManager; @Mock ContentResolver mContentResolver; private EmergencyNumberUtils mUtils; @Before public void setup() { MockitoAnnotations.initMocks(this); when(mContext.getPackageManager()).thenReturn(mPackageManager); when(mContext.getContentResolver()).thenReturn(mContentResolver); } @Test Loading Loading @@ -89,11 +97,10 @@ public class EmergencyNumberUtilsTest { when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager); addEmergencyNumberToTelephony(); ContentResolver resolver = RuntimeEnvironment.application.getContentResolver(); when(mContext.getContentResolver()).thenReturn(resolver); Settings.Secure.putString(resolver, Settings.Secure.EMERGENCY_GESTURE_CALL_NUMBER, USER_OVERRIDE_EMERGENCY_NUMBER); Bundle bundle = new Bundle(); bundle.putString(EMERGENCY_GESTURE_CALL_NUMBER, USER_OVERRIDE_EMERGENCY_NUMBER); when(mContentResolver.call(any(Uri.class), anyString(), nullable(String.class), nullable( Bundle.class))).thenReturn(bundle); mUtils = new EmergencyNumberUtils(mContext); assertThat(mUtils.getPoliceNumber()).isEqualTo(USER_OVERRIDE_EMERGENCY_NUMBER); Loading