Merge "Add EID into SIM status dialog"

This commit is contained in:
TreeHugger Robot
2018-01-24 17:06:57 +00:00
committed by Android (Google) Code Review
5 changed files with 94 additions and 2 deletions

View File

@@ -141,5 +141,18 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/device_info_not_available"/> 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> </LinearLayout>
</ScrollView> </ScrollView>

View File

@@ -2765,6 +2765,8 @@
<string name="status_latest_area_info">Operator info</string> <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" --> <!-- 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> <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" --> <!-- 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> <string name="status_service_state">Service state</string>
<!-- About phone, status item title. The current cell tower signal strength --> <!-- About phone, status item title. The current cell tower signal strength -->

View File

@@ -26,6 +26,7 @@ import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.res.Resources; import android.content.res.Resources;
import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.os.PersistableBundle; import android.os.PersistableBundle;
import android.os.UserHandle; import android.os.UserHandle;
@@ -41,10 +42,12 @@ import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.text.BidiFormatter; import android.text.BidiFormatter;
import android.text.TextDirectionHeuristics; import android.text.TextDirectionHeuristics;
import android.telephony.euicc.EuiccManager;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.wrapper.EuiccManagerWrapper;
import com.android.settingslib.DeviceInfoUtils; import com.android.settingslib.DeviceInfoUtils;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -81,6 +84,8 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
final static int ICCID_INFO_LABEL_ID = R.id.icc_id_label; final static int ICCID_INFO_LABEL_ID = R.id.icc_id_label;
@VisibleForTesting @VisibleForTesting
final static int ICCID_INFO_VALUE_ID = R.id.icc_id_value; 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 = private final static String CB_AREA_INFO_RECEIVED_ACTION =
"com.android.cellbroadcastreceiver.CB_AREA_INFO_RECEIVED"; "com.android.cellbroadcastreceiver.CB_AREA_INFO_RECEIVED";
@@ -92,6 +97,7 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
private final SubscriptionInfo mSubscriptionInfo; private final SubscriptionInfo mSubscriptionInfo;
private final TelephonyManager mTelephonyManager; private final TelephonyManager mTelephonyManager;
private final CarrierConfigManager mCarrierConfigManager; private final CarrierConfigManager mCarrierConfigManager;
private final EuiccManagerWrapper mEuiccManager;
private final Resources mRes; private final Resources mRes;
private final Context mContext; private final Context mContext;
@@ -116,7 +122,6 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
} }
}; };
private PhoneStateListener mPhoneStateListener; private PhoneStateListener mPhoneStateListener;
public SimStatusDialogController(@NonNull SimStatusDialogFragment dialog, Lifecycle lifecycle, public SimStatusDialogController(@NonNull SimStatusDialogFragment dialog, Lifecycle lifecycle,
@@ -128,6 +133,7 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
TELEPHONY_SERVICE); TELEPHONY_SERVICE);
mCarrierConfigManager = (CarrierConfigManager) mContext.getSystemService( mCarrierConfigManager = (CarrierConfigManager) mContext.getSystemService(
CARRIER_CONFIG_SERVICE); CARRIER_CONFIG_SERVICE);
mEuiccManager = new EuiccManagerWrapper(mContext);
mRes = mContext.getResources(); mRes = mContext.getResources();
@@ -137,6 +143,8 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
} }
public void initialize() { public void initialize() {
updateEid();
if (mSubscriptionInfo == null) { if (mSubscriptionInfo == null) {
return; return;
} }
@@ -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) { private SubscriptionInfo getPhoneSubscriptionInfo(int slotId) {
final List<SubscriptionInfo> subscriptionInfoList = SubscriptionManager.from( final List<SubscriptionInfo> subscriptionInfoList = SubscriptionManager.from(
mContext).getActiveSubscriptionInfoList(); mContext).getActiveSubscriptionInfoList();

View File

@@ -0,0 +1,49 @@
/*
* 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();
}
}

View File

@@ -18,6 +18,7 @@ package com.android.settings.deviceinfo.simstatus;
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
.CELLULAR_NETWORK_TYPE_VALUE_ID; .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 import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
.ICCID_INFO_LABEL_ID; .ICCID_INFO_LABEL_ID;
import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
@@ -60,6 +61,7 @@ import android.telephony.TelephonyManager;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wrapper.EuiccManagerWrapper;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import org.junit.Before; import org.junit.Before;
@@ -91,7 +93,8 @@ public class SimStatusDialogControllerTest {
private CarrierConfigManager mCarrierConfigManager; private CarrierConfigManager mCarrierConfigManager;
@Mock @Mock
private PersistableBundle mPersistableBundle; private PersistableBundle mPersistableBundle;
@Mock
private EuiccManagerWrapper mEuiccManager;
private SimStatusDialogController mController; private SimStatusDialogController mController;
private Context mContext; private Context mContext;
@@ -107,15 +110,18 @@ public class SimStatusDialogControllerTest {
mLifecycle = new Lifecycle(mLifecycleOwner); mLifecycle = new Lifecycle(mLifecycleOwner);
mController = spy( mController = spy(
new SimStatusDialogController(mDialog, mLifecycle, 0 /* phone id */)); new SimStatusDialogController(mDialog, mLifecycle, 0 /* phone id */));
mEuiccManager = spy(new EuiccManagerWrapper(mContext));
doReturn(mServiceState).when(mController).getCurrentServiceState(); doReturn(mServiceState).when(mController).getCurrentServiceState();
doReturn(0).when(mController).getDbm(any()); doReturn(0).when(mController).getDbm(any());
doReturn(0).when(mController).getAsuLevel(any()); doReturn(0).when(mController).getAsuLevel(any());
doReturn(mPhoneStateListener).when(mController).getPhoneStateListener(); doReturn(mPhoneStateListener).when(mController).getPhoneStateListener();
doReturn("").when(mController).getPhoneNumber(); doReturn("").when(mController).getPhoneNumber();
doReturn(mSignalStrength).when(mController).getSignalStrength(); doReturn(mSignalStrength).when(mController).getSignalStrength();
doReturn("").when(mEuiccManager).getEid();
ReflectionHelpers.setField(mController, "mTelephonyManager", mTelephonyManager); ReflectionHelpers.setField(mController, "mTelephonyManager", mTelephonyManager);
ReflectionHelpers.setField(mController, "mCarrierConfigManager", mCarrierConfigManager); ReflectionHelpers.setField(mController, "mCarrierConfigManager", mCarrierConfigManager);
ReflectionHelpers.setField(mController, "mSubscriptionInfo", mSubscriptionInfo); ReflectionHelpers.setField(mController, "mSubscriptionInfo", mSubscriptionInfo);
ReflectionHelpers.setField(mController, "mEuiccManager", mEuiccManager);
when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(mPersistableBundle); when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(mPersistableBundle);
} }
@@ -273,4 +279,14 @@ public class SimStatusDialogControllerTest {
verify(mDialog).setText(ICCID_INFO_VALUE_ID, iccid); 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);
}
} }