Loading res/xml/my_device_info.xml +3 −3 Original line number Original line Diff line number Diff line Loading @@ -102,8 +102,7 @@ settings:keywords="@string/keywords_model_and_hardware" settings:keywords="@string/keywords_model_and_hardware" android:summary="@string/summary_placeholder" android:summary="@string/summary_placeholder" settings:allowDynamicSummaryInSlice="true" settings:allowDynamicSummaryInSlice="true" settings:controller= settings:controller="com.android.settings.deviceinfo.DeviceModelPreferenceController"/> "com.android.settings.deviceinfo.DeviceModelPreferenceController"/> <!-- IMEI --> <!-- IMEI --> <Preference <Preference Loading @@ -111,7 +110,8 @@ android:order="22" android:order="22" android:title="@string/status_imei" android:title="@string/status_imei" settings:keywords="@string/keywords_imei_info" settings:keywords="@string/keywords_imei_info" android:summary="@string/summary_placeholder"/> android:summary="@string/summary_placeholder" settings:controller="com.android.settings.deviceinfo.imei.ImeiInfoPreferenceController"/> <!-- Android version --> <!-- Android version --> <Preference <Preference Loading src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoFragment.java +3 −3 Original line number Original line Diff line number Diff line Loading @@ -81,6 +81,7 @@ public class MyDeviceInfoFragment extends DashboardFragment super.onAttach(context); super.onAttach(context); use(FirmwareVersionPreferenceController.class).setHost(this /* parent */); use(FirmwareVersionPreferenceController.class).setHost(this /* parent */); use(DeviceModelPreferenceController.class).setHost(this /* parent */); use(DeviceModelPreferenceController.class).setHost(this /* parent */); use(ImeiInfoPreferenceController.class).setHost(this /* parent */); mBuildNumberPreferenceController = use(BuildNumberPreferenceController.class); mBuildNumberPreferenceController = use(BuildNumberPreferenceController.class); mBuildNumberPreferenceController.setHost(this /* parent */); mBuildNumberPreferenceController.setHost(this /* parent */); } } Loading Loading @@ -121,7 +122,6 @@ public class MyDeviceInfoFragment extends DashboardFragment } } controllers.add(deviceNamePreferenceController); controllers.add(deviceNamePreferenceController); controllers.add(new SimStatusPreferenceController(context, fragment)); controllers.add(new SimStatusPreferenceController(context, fragment)); controllers.add(new ImeiInfoPreferenceController(context, fragment)); controllers.add(new IpAddressPreferenceController(context, lifecycle)); controllers.add(new IpAddressPreferenceController(context, lifecycle)); controllers.add(new WifiMacAddressPreferenceController(context, lifecycle)); controllers.add(new WifiMacAddressPreferenceController(context, lifecycle)); controllers.add(new BluetoothAddressPreferenceController(context, lifecycle)); controllers.add(new BluetoothAddressPreferenceController(context, lifecycle)); Loading src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java +35 −19 Original line number Original line Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.settings.deviceinfo.imei; import static android.telephony.TelephonyManager.PHONE_TYPE_CDMA; import static android.telephony.TelephonyManager.PHONE_TYPE_CDMA; import android.content.Context; import android.content.Context; import android.os.UserManager; import android.telephony.TelephonyManager; import android.telephony.TelephonyManager; import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting; Loading @@ -27,8 +28,9 @@ import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.BasePreferenceController; import com.android.settingslib.deviceinfo.AbstractSimStatusImeiInfoPreferenceController; import com.android.settings.slices.Copyable; import com.android.settingslib.Utils; import java.util.ArrayList; import java.util.ArrayList; import java.util.List; import java.util.List; Loading @@ -36,39 +38,30 @@ import java.util.List; /** /** * Controller that manages preference for single and multi sim devices. * Controller that manages preference for single and multi sim devices. */ */ public class ImeiInfoPreferenceController extends public class ImeiInfoPreferenceController extends BasePreferenceController implements Copyable { AbstractSimStatusImeiInfoPreferenceController implements PreferenceControllerMixin { private static final String KEY_IMEI_INFO = "imei_info"; private final boolean mIsMultiSim; private final boolean mIsMultiSim; private final TelephonyManager mTelephonyManager; private final TelephonyManager mTelephonyManager; private final List<Preference> mPreferenceList = new ArrayList<>(); private final List<Preference> mPreferenceList = new ArrayList<>(); private final Fragment mFragment; private Fragment mFragment; public ImeiInfoPreferenceController(Context context, Fragment fragment) { super(context); mFragment = fragment; public ImeiInfoPreferenceController(Context context, String key) { super(context, key); mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); mIsMultiSim = mTelephonyManager.getPhoneCount() > 1; mIsMultiSim = mTelephonyManager.getPhoneCount() > 1; } } @Override public void setHost(Fragment fragment) { public String getPreferenceKey() { mFragment = fragment; return KEY_IMEI_INFO; } } @Override @Override public void displayPreference(PreferenceScreen screen) { public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); super.displayPreference(screen); final Preference preference = screen.findPreference(getPreferenceKey()); final Preference preference = screen.findPreference(getPreferenceKey()); if (!isAvailable() || preference == null || !preference.isVisible()) { return; } mPreferenceList.add(preference); mPreferenceList.add(preference); updatePreference(preference, 0 /* sim slot */); updatePreference(preference, 0 /* simSlot */); final int imeiPreferenceOrder = preference.getOrder(); final int imeiPreferenceOrder = preference.getOrder(); // Add additional preferences for each sim in the device // Add additional preferences for each sim in the device Loading @@ -76,13 +69,20 @@ public class ImeiInfoPreferenceController extends simSlotNumber++) { simSlotNumber++) { final Preference multiSimPreference = createNewPreference(screen.getContext()); final Preference multiSimPreference = createNewPreference(screen.getContext()); multiSimPreference.setOrder(imeiPreferenceOrder + simSlotNumber); multiSimPreference.setOrder(imeiPreferenceOrder + simSlotNumber); multiSimPreference.setKey(KEY_IMEI_INFO + simSlotNumber); multiSimPreference.setKey(getPreferenceKey() + simSlotNumber); screen.addPreference(multiSimPreference); screen.addPreference(multiSimPreference); mPreferenceList.add(multiSimPreference); mPreferenceList.add(multiSimPreference); updatePreference(multiSimPreference, simSlotNumber); updatePreference(multiSimPreference, simSlotNumber); } } } } @Override public CharSequence getSummary() { final int phoneType = mTelephonyManager.getPhoneType(); return phoneType == PHONE_TYPE_CDMA ? mTelephonyManager.getMeid() : mTelephonyManager.getImei(); } @Override @Override public boolean handlePreferenceTreeClick(Preference preference) { public boolean handlePreferenceTreeClick(Preference preference) { final int simSlot = mPreferenceList.indexOf(preference); final int simSlot = mPreferenceList.indexOf(preference); Loading @@ -94,6 +94,22 @@ public class ImeiInfoPreferenceController extends return true; return true; } } @Override public int getAvailabilityStatus() { return mContext.getSystemService(UserManager.class).isAdminUser() && !Utils.isWifiOnly(mContext) ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } @Override public boolean isSliceable() { return true; } @Override public void copy() { Copyable.setCopyContent(mContext, getSummary(), mContext.getText(R.string.status_imei)); } private void updatePreference(Preference preference, int simSlot) { private void updatePreference(Preference preference, int simSlot) { final int phoneType = mTelephonyManager.getPhoneType(); final int phoneType = mTelephonyManager.getPhoneType(); if (phoneType == PHONE_TYPE_CDMA) { if (phoneType == PHONE_TYPE_CDMA) { Loading tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java +25 −3 Original line number Original line Diff line number Diff line Loading @@ -16,9 +16,14 @@ package com.android.settings.deviceinfo.imei; package com.android.settings.deviceinfo.imei; import static android.content.Context.CLIPBOARD_SERVICE; import static android.telephony.TelephonyManager.PHONE_TYPE_CDMA; import static android.telephony.TelephonyManager.PHONE_TYPE_CDMA; import static android.telephony.TelephonyManager.PHONE_TYPE_GSM; import static android.telephony.TelephonyManager.PHONE_TYPE_GSM; import static com.android.settings.core.BasePreferenceController.AVAILABLE; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock; Loading @@ -26,6 +31,7 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.mockito.Mockito.when; import android.content.ClipboardManager; import android.content.Context; import android.content.Context; import android.os.UserManager; import android.os.UserManager; import android.telephony.TelephonyManager; import android.telephony.TelephonyManager; Loading Loading @@ -71,8 +77,9 @@ public class ImeiInfoPreferenceControllerTest { MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); mContext = spy(RuntimeEnvironment.application); doReturn(mUserManager).when(mContext).getSystemService(UserManager.class); doReturn(mUserManager).when(mContext).getSystemService(UserManager.class); mController = spy(new ImeiInfoPreferenceController(mContext, mFragment)); mController = spy(new ImeiInfoPreferenceController(mContext, "imei_info")); doReturn(true).when(mController).isAvailable(); mController.setHost(mFragment); doReturn(AVAILABLE).when(mController).getAvailabilityStatus(); when(mScreen.getContext()).thenReturn(mContext); when(mScreen.getContext()).thenReturn(mContext); doReturn(mSecondSimPreference).when(mController).createNewPreference(mContext); doReturn(mSecondSimPreference).when(mController).createNewPreference(mContext); ReflectionHelpers.setField(mController, "mTelephonyManager", mTelephonyManager); ReflectionHelpers.setField(mController, "mTelephonyManager", mTelephonyManager); Loading Loading @@ -164,4 +171,19 @@ public class ImeiInfoPreferenceControllerTest { verify(mFragment).getChildFragmentManager(); verify(mFragment).getChildFragmentManager(); } } @Test public void copy_shouldCopyImeiToClipboard() { ReflectionHelpers.setField(mController, "mIsMultiSim", false); final String meid = "125132215123"; when(mTelephonyManager.getPhoneType()).thenReturn(PHONE_TYPE_CDMA); when(mTelephonyManager.getMeid()).thenReturn(meid); mController.copy(); final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService( CLIPBOARD_SERVICE); final CharSequence data = clipboard.getPrimaryClip().getItemAt(0).getText(); assertThat(data.toString()).isEqualTo(meid); } } } Loading
res/xml/my_device_info.xml +3 −3 Original line number Original line Diff line number Diff line Loading @@ -102,8 +102,7 @@ settings:keywords="@string/keywords_model_and_hardware" settings:keywords="@string/keywords_model_and_hardware" android:summary="@string/summary_placeholder" android:summary="@string/summary_placeholder" settings:allowDynamicSummaryInSlice="true" settings:allowDynamicSummaryInSlice="true" settings:controller= settings:controller="com.android.settings.deviceinfo.DeviceModelPreferenceController"/> "com.android.settings.deviceinfo.DeviceModelPreferenceController"/> <!-- IMEI --> <!-- IMEI --> <Preference <Preference Loading @@ -111,7 +110,8 @@ android:order="22" android:order="22" android:title="@string/status_imei" android:title="@string/status_imei" settings:keywords="@string/keywords_imei_info" settings:keywords="@string/keywords_imei_info" android:summary="@string/summary_placeholder"/> android:summary="@string/summary_placeholder" settings:controller="com.android.settings.deviceinfo.imei.ImeiInfoPreferenceController"/> <!-- Android version --> <!-- Android version --> <Preference <Preference Loading
src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoFragment.java +3 −3 Original line number Original line Diff line number Diff line Loading @@ -81,6 +81,7 @@ public class MyDeviceInfoFragment extends DashboardFragment super.onAttach(context); super.onAttach(context); use(FirmwareVersionPreferenceController.class).setHost(this /* parent */); use(FirmwareVersionPreferenceController.class).setHost(this /* parent */); use(DeviceModelPreferenceController.class).setHost(this /* parent */); use(DeviceModelPreferenceController.class).setHost(this /* parent */); use(ImeiInfoPreferenceController.class).setHost(this /* parent */); mBuildNumberPreferenceController = use(BuildNumberPreferenceController.class); mBuildNumberPreferenceController = use(BuildNumberPreferenceController.class); mBuildNumberPreferenceController.setHost(this /* parent */); mBuildNumberPreferenceController.setHost(this /* parent */); } } Loading Loading @@ -121,7 +122,6 @@ public class MyDeviceInfoFragment extends DashboardFragment } } controllers.add(deviceNamePreferenceController); controllers.add(deviceNamePreferenceController); controllers.add(new SimStatusPreferenceController(context, fragment)); controllers.add(new SimStatusPreferenceController(context, fragment)); controllers.add(new ImeiInfoPreferenceController(context, fragment)); controllers.add(new IpAddressPreferenceController(context, lifecycle)); controllers.add(new IpAddressPreferenceController(context, lifecycle)); controllers.add(new WifiMacAddressPreferenceController(context, lifecycle)); controllers.add(new WifiMacAddressPreferenceController(context, lifecycle)); controllers.add(new BluetoothAddressPreferenceController(context, lifecycle)); controllers.add(new BluetoothAddressPreferenceController(context, lifecycle)); Loading
src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java +35 −19 Original line number Original line Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.settings.deviceinfo.imei; import static android.telephony.TelephonyManager.PHONE_TYPE_CDMA; import static android.telephony.TelephonyManager.PHONE_TYPE_CDMA; import android.content.Context; import android.content.Context; import android.os.UserManager; import android.telephony.TelephonyManager; import android.telephony.TelephonyManager; import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting; Loading @@ -27,8 +28,9 @@ import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.BasePreferenceController; import com.android.settingslib.deviceinfo.AbstractSimStatusImeiInfoPreferenceController; import com.android.settings.slices.Copyable; import com.android.settingslib.Utils; import java.util.ArrayList; import java.util.ArrayList; import java.util.List; import java.util.List; Loading @@ -36,39 +38,30 @@ import java.util.List; /** /** * Controller that manages preference for single and multi sim devices. * Controller that manages preference for single and multi sim devices. */ */ public class ImeiInfoPreferenceController extends public class ImeiInfoPreferenceController extends BasePreferenceController implements Copyable { AbstractSimStatusImeiInfoPreferenceController implements PreferenceControllerMixin { private static final String KEY_IMEI_INFO = "imei_info"; private final boolean mIsMultiSim; private final boolean mIsMultiSim; private final TelephonyManager mTelephonyManager; private final TelephonyManager mTelephonyManager; private final List<Preference> mPreferenceList = new ArrayList<>(); private final List<Preference> mPreferenceList = new ArrayList<>(); private final Fragment mFragment; private Fragment mFragment; public ImeiInfoPreferenceController(Context context, Fragment fragment) { super(context); mFragment = fragment; public ImeiInfoPreferenceController(Context context, String key) { super(context, key); mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); mIsMultiSim = mTelephonyManager.getPhoneCount() > 1; mIsMultiSim = mTelephonyManager.getPhoneCount() > 1; } } @Override public void setHost(Fragment fragment) { public String getPreferenceKey() { mFragment = fragment; return KEY_IMEI_INFO; } } @Override @Override public void displayPreference(PreferenceScreen screen) { public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); super.displayPreference(screen); final Preference preference = screen.findPreference(getPreferenceKey()); final Preference preference = screen.findPreference(getPreferenceKey()); if (!isAvailable() || preference == null || !preference.isVisible()) { return; } mPreferenceList.add(preference); mPreferenceList.add(preference); updatePreference(preference, 0 /* sim slot */); updatePreference(preference, 0 /* simSlot */); final int imeiPreferenceOrder = preference.getOrder(); final int imeiPreferenceOrder = preference.getOrder(); // Add additional preferences for each sim in the device // Add additional preferences for each sim in the device Loading @@ -76,13 +69,20 @@ public class ImeiInfoPreferenceController extends simSlotNumber++) { simSlotNumber++) { final Preference multiSimPreference = createNewPreference(screen.getContext()); final Preference multiSimPreference = createNewPreference(screen.getContext()); multiSimPreference.setOrder(imeiPreferenceOrder + simSlotNumber); multiSimPreference.setOrder(imeiPreferenceOrder + simSlotNumber); multiSimPreference.setKey(KEY_IMEI_INFO + simSlotNumber); multiSimPreference.setKey(getPreferenceKey() + simSlotNumber); screen.addPreference(multiSimPreference); screen.addPreference(multiSimPreference); mPreferenceList.add(multiSimPreference); mPreferenceList.add(multiSimPreference); updatePreference(multiSimPreference, simSlotNumber); updatePreference(multiSimPreference, simSlotNumber); } } } } @Override public CharSequence getSummary() { final int phoneType = mTelephonyManager.getPhoneType(); return phoneType == PHONE_TYPE_CDMA ? mTelephonyManager.getMeid() : mTelephonyManager.getImei(); } @Override @Override public boolean handlePreferenceTreeClick(Preference preference) { public boolean handlePreferenceTreeClick(Preference preference) { final int simSlot = mPreferenceList.indexOf(preference); final int simSlot = mPreferenceList.indexOf(preference); Loading @@ -94,6 +94,22 @@ public class ImeiInfoPreferenceController extends return true; return true; } } @Override public int getAvailabilityStatus() { return mContext.getSystemService(UserManager.class).isAdminUser() && !Utils.isWifiOnly(mContext) ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } @Override public boolean isSliceable() { return true; } @Override public void copy() { Copyable.setCopyContent(mContext, getSummary(), mContext.getText(R.string.status_imei)); } private void updatePreference(Preference preference, int simSlot) { private void updatePreference(Preference preference, int simSlot) { final int phoneType = mTelephonyManager.getPhoneType(); final int phoneType = mTelephonyManager.getPhoneType(); if (phoneType == PHONE_TYPE_CDMA) { if (phoneType == PHONE_TYPE_CDMA) { Loading
tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java +25 −3 Original line number Original line Diff line number Diff line Loading @@ -16,9 +16,14 @@ package com.android.settings.deviceinfo.imei; package com.android.settings.deviceinfo.imei; import static android.content.Context.CLIPBOARD_SERVICE; import static android.telephony.TelephonyManager.PHONE_TYPE_CDMA; import static android.telephony.TelephonyManager.PHONE_TYPE_CDMA; import static android.telephony.TelephonyManager.PHONE_TYPE_GSM; import static android.telephony.TelephonyManager.PHONE_TYPE_GSM; import static com.android.settings.core.BasePreferenceController.AVAILABLE; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock; Loading @@ -26,6 +31,7 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.mockito.Mockito.when; import android.content.ClipboardManager; import android.content.Context; import android.content.Context; import android.os.UserManager; import android.os.UserManager; import android.telephony.TelephonyManager; import android.telephony.TelephonyManager; Loading Loading @@ -71,8 +77,9 @@ public class ImeiInfoPreferenceControllerTest { MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); mContext = spy(RuntimeEnvironment.application); doReturn(mUserManager).when(mContext).getSystemService(UserManager.class); doReturn(mUserManager).when(mContext).getSystemService(UserManager.class); mController = spy(new ImeiInfoPreferenceController(mContext, mFragment)); mController = spy(new ImeiInfoPreferenceController(mContext, "imei_info")); doReturn(true).when(mController).isAvailable(); mController.setHost(mFragment); doReturn(AVAILABLE).when(mController).getAvailabilityStatus(); when(mScreen.getContext()).thenReturn(mContext); when(mScreen.getContext()).thenReturn(mContext); doReturn(mSecondSimPreference).when(mController).createNewPreference(mContext); doReturn(mSecondSimPreference).when(mController).createNewPreference(mContext); ReflectionHelpers.setField(mController, "mTelephonyManager", mTelephonyManager); ReflectionHelpers.setField(mController, "mTelephonyManager", mTelephonyManager); Loading Loading @@ -164,4 +171,19 @@ public class ImeiInfoPreferenceControllerTest { verify(mFragment).getChildFragmentManager(); verify(mFragment).getChildFragmentManager(); } } @Test public void copy_shouldCopyImeiToClipboard() { ReflectionHelpers.setField(mController, "mIsMultiSim", false); final String meid = "125132215123"; when(mTelephonyManager.getPhoneType()).thenReturn(PHONE_TYPE_CDMA); when(mTelephonyManager.getMeid()).thenReturn(meid); mController.copy(); final ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService( CLIPBOARD_SERVICE); final CharSequence data = clipboard.getPrimaryClip().getItemAt(0).getText(); assertThat(data.toString()).isEqualTo(meid); } } }