Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 09a7a819 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add EID into SIM status dialog"

parents 929f0b77 37f14c0e
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -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>
+2 −0
Original line number Diff line number Diff line
@@ -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 -->
+13 −1
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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";
@@ -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;

@@ -116,7 +122,6 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
        }
    };


    private PhoneStateListener mPhoneStateListener;

    public SimStatusDialogController(@NonNull SimStatusDialogFragment dialog, Lifecycle lifecycle,
@@ -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();

@@ -137,6 +143,8 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O
    }

    public void initialize() {
        updateEid();

        if (mSubscriptionInfo == null) {
            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) {
        final List<SubscriptionInfo> subscriptionInfoList = SubscriptionManager.from(
                mContext).getActiveSubscriptionInfoList();
+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();
    }
}
+17 −1
Original line number Diff line number Diff line
@@ -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
@@ -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;
@@ -91,7 +93,8 @@ public class SimStatusDialogControllerTest {
    private CarrierConfigManager mCarrierConfigManager;
    @Mock
    private PersistableBundle mPersistableBundle;

    @Mock
    private EuiccManagerWrapper mEuiccManager;

    private SimStatusDialogController mController;
    private Context mContext;
@@ -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);
    }

@@ -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);
    }
}