Merge "Add EID into SIM status dialog"
This commit is contained in:
committed by
Android (Google) Code Review
commit
09a7a819a4
@@ -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>
|
||||||
|
@@ -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 -->
|
||||||
|
@@ -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();
|
||||||
|
49
src/com/android/settings/wrapper/EuiccManagerWrapper.java
Normal file
49
src/com/android/settings/wrapper/EuiccManagerWrapper.java
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user