Loading res/layout/dialog_sim_status.xml +13 −0 Original line number Diff line number Diff line Loading @@ -141,5 +141,18 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/device_info_not_available"/> <TextView style="@style/device_info_dialog_label" android:id="@+id/esim_id_label" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/status_esim_id"/> <TextView style="@style/device_info_dialog_value" android:id="@+id/esim_id_value" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/device_info_not_available"/> </LinearLayout> </ScrollView> res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -2765,6 +2765,8 @@ <string name="status_latest_area_info">Operator info</string> <!-- About phone, status item title. The status of data access. For example, the value may be "Connected" --> <string name="status_data_state">Mobile network state</string> <!-- About phone, status item title. The ID of embedded SIM card. --> <string name="status_esim_id">EID</string> <!-- About phone, status item title. The status of whether we have service. for example, the value may be "In service" --> <string name="status_service_state">Service state</string> <!-- About phone, status item title. The current cell tower signal strength --> Loading src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java +13 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; import android.content.res.Resources; import android.os.AsyncTask; import android.os.Bundle; import android.os.PersistableBundle; import android.os.UserHandle; Loading @@ -41,10 +42,12 @@ import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.text.BidiFormatter; import android.text.TextDirectionHeuristics; import android.telephony.euicc.EuiccManager; import android.text.TextUtils; import android.util.Log; import com.android.settings.R; import com.android.settings.wrapper.EuiccManagerWrapper; import com.android.settingslib.DeviceInfoUtils; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; Loading Loading @@ -81,6 +84,8 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O final static int ICCID_INFO_LABEL_ID = R.id.icc_id_label; @VisibleForTesting final static int ICCID_INFO_VALUE_ID = R.id.icc_id_value; @VisibleForTesting final static int EID_INFO_VALUE_ID = R.id.esim_id_value; private final static String CB_AREA_INFO_RECEIVED_ACTION = "com.android.cellbroadcastreceiver.CB_AREA_INFO_RECEIVED"; Loading @@ -92,6 +97,7 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O private final SubscriptionInfo mSubscriptionInfo; private final TelephonyManager mTelephonyManager; private final CarrierConfigManager mCarrierConfigManager; private final EuiccManagerWrapper mEuiccManager; private final Resources mRes; private final Context mContext; Loading @@ -116,7 +122,6 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O } }; private PhoneStateListener mPhoneStateListener; public SimStatusDialogController(@NonNull SimStatusDialogFragment dialog, Lifecycle lifecycle, Loading @@ -128,6 +133,7 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O TELEPHONY_SERVICE); mCarrierConfigManager = (CarrierConfigManager) mContext.getSystemService( CARRIER_CONFIG_SERVICE); mEuiccManager = new EuiccManagerWrapper(mContext); mRes = mContext.getResources(); Loading @@ -137,6 +143,8 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O } public void initialize() { updateEid(); if (mSubscriptionInfo == null) { return; } Loading Loading @@ -363,6 +371,10 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O } } private void updateEid() { mDialog.setText(EID_INFO_VALUE_ID, mEuiccManager.getEid()); } private SubscriptionInfo getPhoneSubscriptionInfo(int slotId) { final List<SubscriptionInfo> subscriptionInfoList = SubscriptionManager.from( mContext).getActiveSubscriptionInfoList(); Loading src/com/android/settings/wrapper/EuiccManagerWrapper.java 0 → 100644 +49 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.wrapper; import android.annotation.Nullable; import android.content.Context; import android.telephony.euicc.EuiccManager; /** * This class replicates a subset of the {@link android.telephony.euicc.EuiccManager}. * The interface exists so that we can use a thin wrapper around the EuiccManager in * production code and a mock in tests. */ public class EuiccManagerWrapper { private final EuiccManager mEuiccManager; public EuiccManagerWrapper(Context context) { mEuiccManager = (EuiccManager) context.getSystemService(Context.EUICC_SERVICE); } /** * Returns the EID identifying the eUICC hardware. * * <p>Requires that the calling app has carrier privileges on the active subscription on the * eUICC. * * @return the EID. May be null if {@link EuiccManager#isEnabled()} is false or the eUICC is not * ready. */ @Nullable public String getEid() { return mEuiccManager.getEid(); } } tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java +17 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings.deviceinfo.simstatus; import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController .CELLULAR_NETWORK_TYPE_VALUE_ID; import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.EID_INFO_VALUE_ID; import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController .ICCID_INFO_LABEL_ID; import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController Loading Loading @@ -60,6 +61,7 @@ import android.telephony.TelephonyManager; import com.android.settings.R; import com.android.settings.TestConfig; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.wrapper.EuiccManagerWrapper; import com.android.settingslib.core.lifecycle.Lifecycle; import org.junit.Before; Loading Loading @@ -91,7 +93,8 @@ public class SimStatusDialogControllerTest { private CarrierConfigManager mCarrierConfigManager; @Mock private PersistableBundle mPersistableBundle; @Mock private EuiccManagerWrapper mEuiccManager; private SimStatusDialogController mController; private Context mContext; Loading @@ -107,15 +110,18 @@ public class SimStatusDialogControllerTest { mLifecycle = new Lifecycle(mLifecycleOwner); mController = spy( new SimStatusDialogController(mDialog, mLifecycle, 0 /* phone id */)); mEuiccManager = spy(new EuiccManagerWrapper(mContext)); doReturn(mServiceState).when(mController).getCurrentServiceState(); doReturn(0).when(mController).getDbm(any()); doReturn(0).when(mController).getAsuLevel(any()); doReturn(mPhoneStateListener).when(mController).getPhoneStateListener(); doReturn("").when(mController).getPhoneNumber(); doReturn(mSignalStrength).when(mController).getSignalStrength(); doReturn("").when(mEuiccManager).getEid(); ReflectionHelpers.setField(mController, "mTelephonyManager", mTelephonyManager); ReflectionHelpers.setField(mController, "mCarrierConfigManager", mCarrierConfigManager); ReflectionHelpers.setField(mController, "mSubscriptionInfo", mSubscriptionInfo); ReflectionHelpers.setField(mController, "mEuiccManager", mEuiccManager); when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(mPersistableBundle); } Loading Loading @@ -273,4 +279,14 @@ public class SimStatusDialogControllerTest { verify(mDialog).setText(ICCID_INFO_VALUE_ID, iccid); } @Test public void initialize_showEid_shouldSetEidToSetting() { final String eid = "12351351231241"; doReturn(eid).when(mEuiccManager).getEid(); mController.initialize(); verify(mDialog).setText(EID_INFO_VALUE_ID, eid); } } Loading
res/layout/dialog_sim_status.xml +13 −0 Original line number Diff line number Diff line Loading @@ -141,5 +141,18 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/device_info_not_available"/> <TextView style="@style/device_info_dialog_label" android:id="@+id/esim_id_label" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/status_esim_id"/> <TextView style="@style/device_info_dialog_value" android:id="@+id/esim_id_value" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/device_info_not_available"/> </LinearLayout> </ScrollView>
res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -2765,6 +2765,8 @@ <string name="status_latest_area_info">Operator info</string> <!-- About phone, status item title. The status of data access. For example, the value may be "Connected" --> <string name="status_data_state">Mobile network state</string> <!-- About phone, status item title. The ID of embedded SIM card. --> <string name="status_esim_id">EID</string> <!-- About phone, status item title. The status of whether we have service. for example, the value may be "In service" --> <string name="status_service_state">Service state</string> <!-- About phone, status item title. The current cell tower signal strength --> Loading
src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java +13 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; import android.content.res.Resources; import android.os.AsyncTask; import android.os.Bundle; import android.os.PersistableBundle; import android.os.UserHandle; Loading @@ -41,10 +42,12 @@ import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.text.BidiFormatter; import android.text.TextDirectionHeuristics; import android.telephony.euicc.EuiccManager; import android.text.TextUtils; import android.util.Log; import com.android.settings.R; import com.android.settings.wrapper.EuiccManagerWrapper; import com.android.settingslib.DeviceInfoUtils; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; Loading Loading @@ -81,6 +84,8 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O final static int ICCID_INFO_LABEL_ID = R.id.icc_id_label; @VisibleForTesting final static int ICCID_INFO_VALUE_ID = R.id.icc_id_value; @VisibleForTesting final static int EID_INFO_VALUE_ID = R.id.esim_id_value; private final static String CB_AREA_INFO_RECEIVED_ACTION = "com.android.cellbroadcastreceiver.CB_AREA_INFO_RECEIVED"; Loading @@ -92,6 +97,7 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O private final SubscriptionInfo mSubscriptionInfo; private final TelephonyManager mTelephonyManager; private final CarrierConfigManager mCarrierConfigManager; private final EuiccManagerWrapper mEuiccManager; private final Resources mRes; private final Context mContext; Loading @@ -116,7 +122,6 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O } }; private PhoneStateListener mPhoneStateListener; public SimStatusDialogController(@NonNull SimStatusDialogFragment dialog, Lifecycle lifecycle, Loading @@ -128,6 +133,7 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O TELEPHONY_SERVICE); mCarrierConfigManager = (CarrierConfigManager) mContext.getSystemService( CARRIER_CONFIG_SERVICE); mEuiccManager = new EuiccManagerWrapper(mContext); mRes = mContext.getResources(); Loading @@ -137,6 +143,8 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O } public void initialize() { updateEid(); if (mSubscriptionInfo == null) { return; } Loading Loading @@ -363,6 +371,10 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O } } private void updateEid() { mDialog.setText(EID_INFO_VALUE_ID, mEuiccManager.getEid()); } private SubscriptionInfo getPhoneSubscriptionInfo(int slotId) { final List<SubscriptionInfo> subscriptionInfoList = SubscriptionManager.from( mContext).getActiveSubscriptionInfoList(); Loading
src/com/android/settings/wrapper/EuiccManagerWrapper.java 0 → 100644 +49 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.wrapper; import android.annotation.Nullable; import android.content.Context; import android.telephony.euicc.EuiccManager; /** * This class replicates a subset of the {@link android.telephony.euicc.EuiccManager}. * The interface exists so that we can use a thin wrapper around the EuiccManager in * production code and a mock in tests. */ public class EuiccManagerWrapper { private final EuiccManager mEuiccManager; public EuiccManagerWrapper(Context context) { mEuiccManager = (EuiccManager) context.getSystemService(Context.EUICC_SERVICE); } /** * Returns the EID identifying the eUICC hardware. * * <p>Requires that the calling app has carrier privileges on the active subscription on the * eUICC. * * @return the EID. May be null if {@link EuiccManager#isEnabled()} is false or the eUICC is not * ready. */ @Nullable public String getEid() { return mEuiccManager.getEid(); } }
tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java +17 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings.deviceinfo.simstatus; import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController .CELLULAR_NETWORK_TYPE_VALUE_ID; import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.EID_INFO_VALUE_ID; import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController .ICCID_INFO_LABEL_ID; import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController Loading Loading @@ -60,6 +61,7 @@ import android.telephony.TelephonyManager; import com.android.settings.R; import com.android.settings.TestConfig; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.wrapper.EuiccManagerWrapper; import com.android.settingslib.core.lifecycle.Lifecycle; import org.junit.Before; Loading Loading @@ -91,7 +93,8 @@ public class SimStatusDialogControllerTest { private CarrierConfigManager mCarrierConfigManager; @Mock private PersistableBundle mPersistableBundle; @Mock private EuiccManagerWrapper mEuiccManager; private SimStatusDialogController mController; private Context mContext; Loading @@ -107,15 +110,18 @@ public class SimStatusDialogControllerTest { mLifecycle = new Lifecycle(mLifecycleOwner); mController = spy( new SimStatusDialogController(mDialog, mLifecycle, 0 /* phone id */)); mEuiccManager = spy(new EuiccManagerWrapper(mContext)); doReturn(mServiceState).when(mController).getCurrentServiceState(); doReturn(0).when(mController).getDbm(any()); doReturn(0).when(mController).getAsuLevel(any()); doReturn(mPhoneStateListener).when(mController).getPhoneStateListener(); doReturn("").when(mController).getPhoneNumber(); doReturn(mSignalStrength).when(mController).getSignalStrength(); doReturn("").when(mEuiccManager).getEid(); ReflectionHelpers.setField(mController, "mTelephonyManager", mTelephonyManager); ReflectionHelpers.setField(mController, "mCarrierConfigManager", mCarrierConfigManager); ReflectionHelpers.setField(mController, "mSubscriptionInfo", mSubscriptionInfo); ReflectionHelpers.setField(mController, "mEuiccManager", mEuiccManager); when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(mPersistableBundle); } Loading Loading @@ -273,4 +279,14 @@ public class SimStatusDialogControllerTest { verify(mDialog).setText(ICCID_INFO_VALUE_ID, iccid); } @Test public void initialize_showEid_shouldSetEidToSetting() { final String eid = "12351351231241"; doReturn(eid).when(mEuiccManager).getEid(); mController.initialize(); verify(mDialog).setText(EID_INFO_VALUE_ID, eid); } }