Add getter/setter to access emergency number overrides
This value is migrated from Settings.Secure to EmergencyInfo app via a contentprovider. Bug: 177006940 Test: Robotests Change-Id: I345d9ff828021da35556f2d51da512840dda8026
This commit is contained in:
@@ -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;
|
||||
@@ -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";
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user