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_NUMBER_SOURCE_DATABASE;
|
||||||
import static android.telephony.emergency.EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_POLICE;
|
import static android.telephony.emergency.EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_POLICE;
|
||||||
|
|
||||||
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.provider.Settings;
|
import android.net.Uri;
|
||||||
|
import android.os.Bundle;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
import android.telephony.emergency.EmergencyNumber;
|
import android.telephony.emergency.EmergencyNumber;
|
||||||
@@ -40,7 +42,16 @@ import java.util.Map;
|
|||||||
*/
|
*/
|
||||||
public class EmergencyNumberUtils {
|
public class EmergencyNumberUtils {
|
||||||
private static final String TAG = "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
|
@VisibleForTesting
|
||||||
static final String FALL_BACK_NUMBER = "112";
|
static final String FALL_BACK_NUMBER = "112";
|
||||||
|
|
||||||
@@ -77,12 +88,28 @@ public class EmergencyNumberUtils {
|
|||||||
* #getDefaultPoliceNumber()}).
|
* #getDefaultPoliceNumber()}).
|
||||||
*/
|
*/
|
||||||
public String getPoliceNumber() {
|
public String getPoliceNumber() {
|
||||||
final String userProvidedNumber = Settings.Secure.getString(mContext.getContentResolver(),
|
final String userProvidedNumber = getEmergencyNumberOverride();
|
||||||
EMERGENCY_GESTURE_CALL_NUMBER);
|
|
||||||
return TextUtils.isEmpty(userProvidedNumber)
|
return TextUtils.isEmpty(userProvidedNumber)
|
||||||
? getDefaultPoliceNumber() : 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) {
|
private List<EmergencyNumber> getPromotedEmergencyNumbers(int categories) {
|
||||||
// TODO(b/171542607): Use platform API when its bug is fixed.
|
// TODO(b/171542607): Use platform API when its bug is fixed.
|
||||||
Map<Integer, List<EmergencyNumber>> allLists = filterEmergencyNumbersByCategories(
|
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 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 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.mock;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.provider.Settings;
|
import android.net.Uri;
|
||||||
|
import android.os.Bundle;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
import android.telephony.emergency.EmergencyNumber;
|
import android.telephony.emergency.EmergencyNumber;
|
||||||
@@ -38,7 +44,6 @@ import org.junit.runner.RunWith;
|
|||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -55,12 +60,15 @@ public class EmergencyNumberUtilsTest {
|
|||||||
private PackageManager mPackageManager;
|
private PackageManager mPackageManager;
|
||||||
@Mock
|
@Mock
|
||||||
private TelephonyManager mTelephonyManager;
|
private TelephonyManager mTelephonyManager;
|
||||||
|
@Mock
|
||||||
|
ContentResolver mContentResolver;
|
||||||
private EmergencyNumberUtils mUtils;
|
private EmergencyNumberUtils mUtils;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
||||||
|
when(mContext.getContentResolver()).thenReturn(mContentResolver);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -89,11 +97,10 @@ public class EmergencyNumberUtilsTest {
|
|||||||
when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
|
when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
|
||||||
addEmergencyNumberToTelephony();
|
addEmergencyNumberToTelephony();
|
||||||
|
|
||||||
ContentResolver resolver = RuntimeEnvironment.application.getContentResolver();
|
Bundle bundle = new Bundle();
|
||||||
when(mContext.getContentResolver()).thenReturn(resolver);
|
bundle.putString(EMERGENCY_GESTURE_CALL_NUMBER, USER_OVERRIDE_EMERGENCY_NUMBER);
|
||||||
Settings.Secure.putString(resolver, Settings.Secure.EMERGENCY_GESTURE_CALL_NUMBER,
|
when(mContentResolver.call(any(Uri.class), anyString(), nullable(String.class), nullable(
|
||||||
USER_OVERRIDE_EMERGENCY_NUMBER);
|
Bundle.class))).thenReturn(bundle);
|
||||||
|
|
||||||
mUtils = new EmergencyNumberUtils(mContext);
|
mUtils = new EmergencyNumberUtils(mContext);
|
||||||
|
|
||||||
assertThat(mUtils.getPoliceNumber()).isEqualTo(USER_OVERRIDE_EMERGENCY_NUMBER);
|
assertThat(mUtils.getPoliceNumber()).isEqualTo(USER_OVERRIDE_EMERGENCY_NUMBER);
|
||||||
|
|||||||
Reference in New Issue
Block a user