Loading res/values/strings.xml +7 −9 Original line number Diff line number Diff line Loading @@ -2664,9 +2664,7 @@ <!-- [CHAR LIMIT=100] Main settings screen item's summary for the SD card and storage settings --> <string name="storage_settings_summary" product="default">Unmount SD card, view available storage</string> <!-- About phone screen, title for IMEI for multi-sim devices --> <string name="imei_multi_sim_slot_1">IMEI (sim slot 1)</string> <!-- About phone screen, title for IMEI for multi-sim devices --> <string name="imei_multi_sim_slot_2">IMEI (sim slot 2)</string> <string name="imei_multi_sim">IMEI (sim slot %1$d)</string> <!-- Do not translate. About phone, status item title --> <string name="status_imei">IMEI</string> <!-- Do not translate. About phone, status item title --> Loading @@ -2677,6 +2675,10 @@ <string name="status_number" product="tablet">MDN</string> <!-- About phone, status item title. The phone number of the current device [CHAR LIMIT=30] --> <string name="status_number" product="default">Phone number</string> <!-- About tablet, status item title for multi-sim devices. The Mobile Directory Number [CHAR LIMIT=30] --> <string name="status_number_sim_slot" product="tablet">MDN (sim slot %1$d)</string> <!-- About phone, status item title for multi-sim devices. The phone number of the current device [CHAR LIMIT=30] --> <string name="status_number_sim_slot" product="default">Phone number (sim slot %1$d)</string> <!-- About tablet, status item title. The Mobile Directory Number [CHAR LIMIT=30] --> <string name="status_number_sim_status" product="tablet">MDN on SIM</string> <!-- About phone, status item title. The phone number of the current device [CHAR LIMIT=30] --> Loading @@ -2688,9 +2690,7 @@ <!-- About phone, status item title. The phone PRL Version of the current device.--> <string name="status_prl_version">PRL version</string> <!-- About phone screen, title for MEID for multi-sim devices --> <string name="meid_multi_sim_sim_slot_1">MEID (sim slot 1)</string> <!-- About phone screen, title for MEID for multi-sim devices --> <string name="meid_multi_sim_sim_slot_2">MEID (sim slot 2)</string> <string name="meid_multi_sim">MEID (sim slot %1$d)</string> <!-- About phone, status item title. The phone MEID number of the current LTE/CDMA device. [CHAR LIMIT=30] --> <string name="status_meid_number">MEID</string> <!-- About phone, status item title. The ICCID of the current LTE device. [CHAR LIMIT=30] --> Loading Loading @@ -6447,9 +6447,7 @@ <!-- SIM status title [CHAR LIMIT=40] --> <string name="sim_status_title">SIM status</string> <!-- SIM status title [CHAR LIMIT=40] --> <string name="sim_status_title_sim_slot_1">SIM status (sim slot 1)</string> <!-- SIM status title [CHAR LIMIT=40] --> <string name="sim_status_title_sim_slot_2">SIM status (sim slot 2)</string> <string name="sim_status_title_sim_slot">SIM status (sim slot %1$d)</string> <!-- Title for call back. [CHAR LIMIT=60] --> <string name="sim_call_back_title">Call back from default SIM</string> <!-- Title for outgoing back. [CHAR LIMIT=60] --> res/xml/device_info_settings_v2.xml +16 −18 Original line number Diff line number Diff line Loading @@ -25,51 +25,43 @@ <!-- Phone number --> <Preference android:key="phone_number" android:order="0" android:title="@string/status_number" android:summary="@string/summary_placeholder"/> <!-- SIM status Sim Slot 1 --> <!-- SIM status --> <Preference android:key="sim_status_sim_1" android:key="sim_status" android:order="10" android:title="@string/sim_status_title" android:summary="@string/summary_placeholder"/> <!-- SIM status Sim Slot 2--> <Preference android:key="sim_status_sim_2" android:title="@string/sim_status_title_sim_slot_2" android:summary="@string/summary_placeholder"/> <!-- Model & hardware --> <Preference android:key="device_model" android:order="21" android:title="@string/hardware_info" android:summary="@string/summary_placeholder"/> <!-- IMEI Sim Slot 1 --> <!-- IMEI --> <Preference android:key="imei_info_sim_slot_1" android:key="imei_info" android:order="22" android:title="@string/status_imei" settings:keywords="@string/keywords_imei_info" android:summary="@string/summary_placeholder"/> <!-- IMEI Sim Slot 2 --> <Preference android:key="imei_info_sim_slot_2" android:title="@string/imei_multi_sim_slot_2" settings:keywords="@string/keywords_imei_info" android:summary="@string/summary_placeholder"/> <!-- Android version --> <Preference android:key="firmware_version" android:order="32" android:title="@string/firmware_version" android:summary="@string/summary_placeholder"/> <!--IP address --> <Preference android:key="wifi_ip_address" android:order="33" android:title="@string/wifi_ip_address" android:summary="@string/summary_placeholder" settings:allowDividerAbove="true"/> Loading @@ -77,12 +69,14 @@ <!-- Wi-Fi MAC address --> <Preference android:key="wifi_mac_address" android:order="34" android:title="@string/status_wifi_mac_address" android:summary="@string/summary_placeholder"/> <!-- Bluetooth address --> <Preference android:key="bt_address" android:order="35" android:title="@string/status_bt_address" android:summary="@string/summary_placeholder"/> Loading @@ -90,6 +84,7 @@ <!-- Legal information --> <Preference android:key="legal_container" android:order="36" android:title="@string/legal_information" android:fragment="com.android.settings.LegalSettings" settings:allowDividerAbove="true"/> Loading @@ -97,6 +92,7 @@ <!-- Regulatory labels --> <Preference android:key="regulatory_info" android:order="37" android:title="@string/regulatory_labels"> <intent android:action="android.settings.SHOW_REGULATORY_INFO"/> </Preference> Loading @@ -104,6 +100,7 @@ <!-- Safety & regulatory manual --> <Preference android:key="safety_info" android:order="38" android:title="@string/safety_and_regulatory_info"> <intent android:action="android.settings.SHOW_SAFETY_AND_REGULATORY_INFO"/> </Preference> Loading @@ -111,6 +108,7 @@ <!-- Build number --> <Preference android:key="build_number" android:order="39" android:title="@string/build_number" android:summary="@string/summary_placeholder" settings:allowDividerAbove="true"/> Loading src/com/android/settings/DeviceInfoSettings.java +5 −10 Original line number Diff line number Diff line Loading @@ -36,17 +36,16 @@ import com.android.settings.deviceinfo.FccEquipmentIdPreferenceController; import com.android.settings.deviceinfo.FeedbackPreferenceController; import com.android.settings.deviceinfo.FirmwareVersionPreferenceController; import com.android.settings.deviceinfo.IpAddressPreferenceController; import com.android.settings.deviceinfo.WifiMacAddressPreferenceController; import com.android.settings.deviceinfo.imei.ImeiInfoDualSimPreferenceController; import com.android.settings.deviceinfo.imei.ImeiInfoPreferenceControllerV2; import com.android.settings.deviceinfo.KernelVersionPreferenceController; import com.android.settings.deviceinfo.ManualPreferenceController; import com.android.settings.deviceinfo.PhoneNumberPreferenceController; import com.android.settings.deviceinfo.RegulatoryInfoPreferenceController; import com.android.settings.deviceinfo.SafetyInfoPreferenceController; import com.android.settings.deviceinfo.SecurityPatchPreferenceController; import com.android.settings.deviceinfo.simstatus.SimStatusDualSimPreferenceController; import com.android.settings.deviceinfo.simstatus.SimStatusPreferenceControllerV2; import com.android.settings.deviceinfo.WifiMacAddressPreferenceController; import com.android.settings.deviceinfo.firmwareversion.FirmwareVersionPreferenceControllerV2; import com.android.settings.deviceinfo.imei.ImeiInfoPreferenceControllerV2; import com.android.settings.deviceinfo.simstatus.SimStatusPreferenceControllerV2; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settingslib.core.AbstractPreferenceController; Loading Loading @@ -130,18 +129,14 @@ public class DeviceInfoSettings extends DashboardFragment implements Indexable { final List<AbstractPreferenceController> controllers = new ArrayList<>(); // Device name // Phone number controllers.add(new PhoneNumberPreferenceController(context)); controllers.add(new SimStatusPreferenceControllerV2(context, fragment)); controllers.add(new SimStatusDualSimPreferenceController(context, fragment)); controllers.add(new DeviceModelPreferenceController(context, fragment)); controllers.add(new ImeiInfoPreferenceControllerV2(context, fragment)); controllers.add(new ImeiInfoDualSimPreferenceController(context, fragment)); controllers.add(new FirmwareVersionPreferenceControllerV2(context, fragment)); controllers.add(new IpAddressPreferenceController(context, lifecycle)); Loading src/com/android/settings/deviceinfo/simstatus/AbstractSimStatusPreferenceController.java→src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java +128 −0 Original line number Diff line number Diff line Loading @@ -14,10 +14,10 @@ * limitations under the License. */ package com.android.settings.deviceinfo.simstatus; package com.android.settings.deviceinfo; import android.app.Fragment; import android.content.Context; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.telephony.SubscriptionInfo; Loading @@ -26,73 +26,103 @@ import android.telephony.TelephonyManager; import android.text.TextUtils; import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.deviceinfo.AbstractSimStatusImeiInfoPreferenceController; import com.android.settingslib.DeviceInfoUtils; import com.android.settingslib.core.AbstractPreferenceController; import java.util.ArrayList; import java.util.List; public abstract class AbstractSimStatusPreferenceController extends AbstractSimStatusImeiInfoPreferenceController implements PreferenceControllerMixin { public class PhoneNumberPreferenceController extends AbstractPreferenceController { protected final boolean mIsMultiSim; protected final TelephonyManager mTelephonyManager; private final SubscriptionManager mSubscriptionManager; private final Fragment mFragment; private final static String KEY_PHONE_NUMBER = "phone_number"; private Preference mPreference; private final TelephonyManager mTelephonyManager; private final SubscriptionManager mSubscriptionManager; private final List<Preference> mPreferenceList = new ArrayList<>(); public AbstractSimStatusPreferenceController(Context context, Fragment fragment) { public PhoneNumberPreferenceController(Context context) { super(context); mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); mSubscriptionManager = (SubscriptionManager) context.getSystemService( Context.TELEPHONY_SUBSCRIPTION_SERVICE); mFragment = fragment; mIsMultiSim = mTelephonyManager.getPhoneCount() > 1; } @Override public String getPreferenceKey() { return KEY_PHONE_NUMBER; } @Override public boolean isAvailable() { return true; } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); if (mPreference == null) { return; final Preference preference = screen.findPreference(getPreferenceKey()); mPreferenceList.add(preference); final int phonePreferenceOrder = preference.getOrder(); // Add additional preferences for each sim in the device for (int simSlotNumber = 1; simSlotNumber < mTelephonyManager.getPhoneCount(); simSlotNumber++) { final Preference multiSimPreference = createNewPreference(screen.getContext()); multiSimPreference.setOrder(phonePreferenceOrder + simSlotNumber); multiSimPreference.setKey(KEY_PHONE_NUMBER + simSlotNumber); screen.addPreference(multiSimPreference); mPreferenceList.add(multiSimPreference); } mPreference.setTitle(getPreferenceTitle()); mPreference.setSummary(getCarrierName()); } @Override public boolean handlePreferenceTreeClick(Preference preference) { if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) { return false; public void updateState(Preference preference) { for (int simSlotNumber = 0; simSlotNumber < mPreferenceList.size(); simSlotNumber++) { final Preference simStatusPreference = mPreferenceList.get(simSlotNumber); simStatusPreference.setTitle(getPreferenceTitle(simSlotNumber)); simStatusPreference.setSummary(getPhoneNumber(simSlotNumber)); } } SimStatusDialogFragment.show(mFragment, getSimSlot(), getPreferenceTitle()); return true; private CharSequence getPhoneNumber(int simSlot) { final SubscriptionInfo subscriptionInfo = getSubscriptionInfo(simSlot); if (subscriptionInfo == null) { return mContext.getString(R.string.device_info_default); } /** * @return The preference title for the displayed preference. */ protected abstract String getPreferenceTitle(); return getFormattedPhoneNumber(subscriptionInfo); } /** * @return The sim slot to retrieve sim status information about. */ protected abstract int getSimSlot(); private CharSequence getPreferenceTitle(int simSlot) { return mTelephonyManager.getPhoneCount() > 1 ? mContext.getString( R.string.status_number_sim_slot, simSlot + 1) : mContext.getString( R.string.status_number); } private CharSequence getCarrierName() { @VisibleForTesting SubscriptionInfo getSubscriptionInfo(int simSlot) { final List<SubscriptionInfo> subscriptionInfoList = mSubscriptionManager.getActiveSubscriptionInfoList(); if (subscriptionInfoList != null) { for (SubscriptionInfo info : subscriptionInfoList) { if (info.getSimSlotIndex() == getSimSlot()) { return info.getCarrierName(); if (info.getSimSlotIndex() == simSlot) { return info; } } } return null; } return mContext.getText(R.string.device_info_not_available); @VisibleForTesting CharSequence getFormattedPhoneNumber(SubscriptionInfo subscriptionInfo) { final String phoneNumber = DeviceInfoUtils.getFormattedPhoneNumber(mContext, subscriptionInfo); return TextUtils.isEmpty(phoneNumber) ? mContext.getString(R.string.device_info_default) : phoneNumber; } @VisibleForTesting Preference createNewPreference(Context context) { return new Preference(context); } } src/com/android/settings/deviceinfo/imei/AbstractImeiInfoPreferenceController.javadeleted 100644 → 0 +0 −99 Original line number Diff line number Diff line /* * Copyright (C) 2017 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.deviceinfo.imei; import static android.telephony.TelephonyManager.PHONE_TYPE_CDMA; import android.app.Fragment; import android.content.Context; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.telephony.TelephonyManager; import android.text.TextUtils; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.deviceinfo.AbstractSimStatusImeiInfoPreferenceController; /** * Controller that manages preference for single and dual sim devices. */ public abstract class AbstractImeiInfoPreferenceController extends AbstractSimStatusImeiInfoPreferenceController implements PreferenceControllerMixin { protected final boolean mIsMultiSim; protected final TelephonyManager mTelephonyManager; private Preference mPreference; private Fragment mFragment; public AbstractImeiInfoPreferenceController(Context context, Fragment fragment) { super(context); mFragment = fragment; mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); mIsMultiSim = mTelephonyManager.getPhoneCount() > 1; } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); if (mPreference == null) { return; } final int phoneType = mTelephonyManager.getPhoneType(); if (phoneType == PHONE_TYPE_CDMA) { mPreference.setTitle(getTitleForCdmaPhone()); mPreference.setSummary(getMeid()); } else { // GSM phone mPreference.setTitle(getTitleForGsmPhone()); mPreference.setSummary(mTelephonyManager.getImei(getSimSlot())); } } @Override public boolean handlePreferenceTreeClick(Preference preference) { if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) { return false; } ImeiInfoDialogFragment.show(mFragment, getSimSlot(), mPreference.getTitle().toString()); return true; } /** * @return The preference title for phones based on CDMA technology. */ protected abstract String getTitleForCdmaPhone(); /** * @return The preference title for phones based on GSM technology. */ protected abstract String getTitleForGsmPhone(); /** * @return The sim slot to retrieve IMEI/CDMA information about. */ protected abstract int getSimSlot(); @VisibleForTesting String getMeid() { return mTelephonyManager.getMeid(getSimSlot()); } } Loading
res/values/strings.xml +7 −9 Original line number Diff line number Diff line Loading @@ -2664,9 +2664,7 @@ <!-- [CHAR LIMIT=100] Main settings screen item's summary for the SD card and storage settings --> <string name="storage_settings_summary" product="default">Unmount SD card, view available storage</string> <!-- About phone screen, title for IMEI for multi-sim devices --> <string name="imei_multi_sim_slot_1">IMEI (sim slot 1)</string> <!-- About phone screen, title for IMEI for multi-sim devices --> <string name="imei_multi_sim_slot_2">IMEI (sim slot 2)</string> <string name="imei_multi_sim">IMEI (sim slot %1$d)</string> <!-- Do not translate. About phone, status item title --> <string name="status_imei">IMEI</string> <!-- Do not translate. About phone, status item title --> Loading @@ -2677,6 +2675,10 @@ <string name="status_number" product="tablet">MDN</string> <!-- About phone, status item title. The phone number of the current device [CHAR LIMIT=30] --> <string name="status_number" product="default">Phone number</string> <!-- About tablet, status item title for multi-sim devices. The Mobile Directory Number [CHAR LIMIT=30] --> <string name="status_number_sim_slot" product="tablet">MDN (sim slot %1$d)</string> <!-- About phone, status item title for multi-sim devices. The phone number of the current device [CHAR LIMIT=30] --> <string name="status_number_sim_slot" product="default">Phone number (sim slot %1$d)</string> <!-- About tablet, status item title. The Mobile Directory Number [CHAR LIMIT=30] --> <string name="status_number_sim_status" product="tablet">MDN on SIM</string> <!-- About phone, status item title. The phone number of the current device [CHAR LIMIT=30] --> Loading @@ -2688,9 +2690,7 @@ <!-- About phone, status item title. The phone PRL Version of the current device.--> <string name="status_prl_version">PRL version</string> <!-- About phone screen, title for MEID for multi-sim devices --> <string name="meid_multi_sim_sim_slot_1">MEID (sim slot 1)</string> <!-- About phone screen, title for MEID for multi-sim devices --> <string name="meid_multi_sim_sim_slot_2">MEID (sim slot 2)</string> <string name="meid_multi_sim">MEID (sim slot %1$d)</string> <!-- About phone, status item title. The phone MEID number of the current LTE/CDMA device. [CHAR LIMIT=30] --> <string name="status_meid_number">MEID</string> <!-- About phone, status item title. The ICCID of the current LTE device. [CHAR LIMIT=30] --> Loading Loading @@ -6447,9 +6447,7 @@ <!-- SIM status title [CHAR LIMIT=40] --> <string name="sim_status_title">SIM status</string> <!-- SIM status title [CHAR LIMIT=40] --> <string name="sim_status_title_sim_slot_1">SIM status (sim slot 1)</string> <!-- SIM status title [CHAR LIMIT=40] --> <string name="sim_status_title_sim_slot_2">SIM status (sim slot 2)</string> <string name="sim_status_title_sim_slot">SIM status (sim slot %1$d)</string> <!-- Title for call back. [CHAR LIMIT=60] --> <string name="sim_call_back_title">Call back from default SIM</string> <!-- Title for outgoing back. [CHAR LIMIT=60] -->
res/xml/device_info_settings_v2.xml +16 −18 Original line number Diff line number Diff line Loading @@ -25,51 +25,43 @@ <!-- Phone number --> <Preference android:key="phone_number" android:order="0" android:title="@string/status_number" android:summary="@string/summary_placeholder"/> <!-- SIM status Sim Slot 1 --> <!-- SIM status --> <Preference android:key="sim_status_sim_1" android:key="sim_status" android:order="10" android:title="@string/sim_status_title" android:summary="@string/summary_placeholder"/> <!-- SIM status Sim Slot 2--> <Preference android:key="sim_status_sim_2" android:title="@string/sim_status_title_sim_slot_2" android:summary="@string/summary_placeholder"/> <!-- Model & hardware --> <Preference android:key="device_model" android:order="21" android:title="@string/hardware_info" android:summary="@string/summary_placeholder"/> <!-- IMEI Sim Slot 1 --> <!-- IMEI --> <Preference android:key="imei_info_sim_slot_1" android:key="imei_info" android:order="22" android:title="@string/status_imei" settings:keywords="@string/keywords_imei_info" android:summary="@string/summary_placeholder"/> <!-- IMEI Sim Slot 2 --> <Preference android:key="imei_info_sim_slot_2" android:title="@string/imei_multi_sim_slot_2" settings:keywords="@string/keywords_imei_info" android:summary="@string/summary_placeholder"/> <!-- Android version --> <Preference android:key="firmware_version" android:order="32" android:title="@string/firmware_version" android:summary="@string/summary_placeholder"/> <!--IP address --> <Preference android:key="wifi_ip_address" android:order="33" android:title="@string/wifi_ip_address" android:summary="@string/summary_placeholder" settings:allowDividerAbove="true"/> Loading @@ -77,12 +69,14 @@ <!-- Wi-Fi MAC address --> <Preference android:key="wifi_mac_address" android:order="34" android:title="@string/status_wifi_mac_address" android:summary="@string/summary_placeholder"/> <!-- Bluetooth address --> <Preference android:key="bt_address" android:order="35" android:title="@string/status_bt_address" android:summary="@string/summary_placeholder"/> Loading @@ -90,6 +84,7 @@ <!-- Legal information --> <Preference android:key="legal_container" android:order="36" android:title="@string/legal_information" android:fragment="com.android.settings.LegalSettings" settings:allowDividerAbove="true"/> Loading @@ -97,6 +92,7 @@ <!-- Regulatory labels --> <Preference android:key="regulatory_info" android:order="37" android:title="@string/regulatory_labels"> <intent android:action="android.settings.SHOW_REGULATORY_INFO"/> </Preference> Loading @@ -104,6 +100,7 @@ <!-- Safety & regulatory manual --> <Preference android:key="safety_info" android:order="38" android:title="@string/safety_and_regulatory_info"> <intent android:action="android.settings.SHOW_SAFETY_AND_REGULATORY_INFO"/> </Preference> Loading @@ -111,6 +108,7 @@ <!-- Build number --> <Preference android:key="build_number" android:order="39" android:title="@string/build_number" android:summary="@string/summary_placeholder" settings:allowDividerAbove="true"/> Loading
src/com/android/settings/DeviceInfoSettings.java +5 −10 Original line number Diff line number Diff line Loading @@ -36,17 +36,16 @@ import com.android.settings.deviceinfo.FccEquipmentIdPreferenceController; import com.android.settings.deviceinfo.FeedbackPreferenceController; import com.android.settings.deviceinfo.FirmwareVersionPreferenceController; import com.android.settings.deviceinfo.IpAddressPreferenceController; import com.android.settings.deviceinfo.WifiMacAddressPreferenceController; import com.android.settings.deviceinfo.imei.ImeiInfoDualSimPreferenceController; import com.android.settings.deviceinfo.imei.ImeiInfoPreferenceControllerV2; import com.android.settings.deviceinfo.KernelVersionPreferenceController; import com.android.settings.deviceinfo.ManualPreferenceController; import com.android.settings.deviceinfo.PhoneNumberPreferenceController; import com.android.settings.deviceinfo.RegulatoryInfoPreferenceController; import com.android.settings.deviceinfo.SafetyInfoPreferenceController; import com.android.settings.deviceinfo.SecurityPatchPreferenceController; import com.android.settings.deviceinfo.simstatus.SimStatusDualSimPreferenceController; import com.android.settings.deviceinfo.simstatus.SimStatusPreferenceControllerV2; import com.android.settings.deviceinfo.WifiMacAddressPreferenceController; import com.android.settings.deviceinfo.firmwareversion.FirmwareVersionPreferenceControllerV2; import com.android.settings.deviceinfo.imei.ImeiInfoPreferenceControllerV2; import com.android.settings.deviceinfo.simstatus.SimStatusPreferenceControllerV2; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settingslib.core.AbstractPreferenceController; Loading Loading @@ -130,18 +129,14 @@ public class DeviceInfoSettings extends DashboardFragment implements Indexable { final List<AbstractPreferenceController> controllers = new ArrayList<>(); // Device name // Phone number controllers.add(new PhoneNumberPreferenceController(context)); controllers.add(new SimStatusPreferenceControllerV2(context, fragment)); controllers.add(new SimStatusDualSimPreferenceController(context, fragment)); controllers.add(new DeviceModelPreferenceController(context, fragment)); controllers.add(new ImeiInfoPreferenceControllerV2(context, fragment)); controllers.add(new ImeiInfoDualSimPreferenceController(context, fragment)); controllers.add(new FirmwareVersionPreferenceControllerV2(context, fragment)); controllers.add(new IpAddressPreferenceController(context, lifecycle)); Loading
src/com/android/settings/deviceinfo/simstatus/AbstractSimStatusPreferenceController.java→src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java +128 −0 Original line number Diff line number Diff line Loading @@ -14,10 +14,10 @@ * limitations under the License. */ package com.android.settings.deviceinfo.simstatus; package com.android.settings.deviceinfo; import android.app.Fragment; import android.content.Context; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.telephony.SubscriptionInfo; Loading @@ -26,73 +26,103 @@ import android.telephony.TelephonyManager; import android.text.TextUtils; import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.deviceinfo.AbstractSimStatusImeiInfoPreferenceController; import com.android.settingslib.DeviceInfoUtils; import com.android.settingslib.core.AbstractPreferenceController; import java.util.ArrayList; import java.util.List; public abstract class AbstractSimStatusPreferenceController extends AbstractSimStatusImeiInfoPreferenceController implements PreferenceControllerMixin { public class PhoneNumberPreferenceController extends AbstractPreferenceController { protected final boolean mIsMultiSim; protected final TelephonyManager mTelephonyManager; private final SubscriptionManager mSubscriptionManager; private final Fragment mFragment; private final static String KEY_PHONE_NUMBER = "phone_number"; private Preference mPreference; private final TelephonyManager mTelephonyManager; private final SubscriptionManager mSubscriptionManager; private final List<Preference> mPreferenceList = new ArrayList<>(); public AbstractSimStatusPreferenceController(Context context, Fragment fragment) { public PhoneNumberPreferenceController(Context context) { super(context); mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); mSubscriptionManager = (SubscriptionManager) context.getSystemService( Context.TELEPHONY_SUBSCRIPTION_SERVICE); mFragment = fragment; mIsMultiSim = mTelephonyManager.getPhoneCount() > 1; } @Override public String getPreferenceKey() { return KEY_PHONE_NUMBER; } @Override public boolean isAvailable() { return true; } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); if (mPreference == null) { return; final Preference preference = screen.findPreference(getPreferenceKey()); mPreferenceList.add(preference); final int phonePreferenceOrder = preference.getOrder(); // Add additional preferences for each sim in the device for (int simSlotNumber = 1; simSlotNumber < mTelephonyManager.getPhoneCount(); simSlotNumber++) { final Preference multiSimPreference = createNewPreference(screen.getContext()); multiSimPreference.setOrder(phonePreferenceOrder + simSlotNumber); multiSimPreference.setKey(KEY_PHONE_NUMBER + simSlotNumber); screen.addPreference(multiSimPreference); mPreferenceList.add(multiSimPreference); } mPreference.setTitle(getPreferenceTitle()); mPreference.setSummary(getCarrierName()); } @Override public boolean handlePreferenceTreeClick(Preference preference) { if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) { return false; public void updateState(Preference preference) { for (int simSlotNumber = 0; simSlotNumber < mPreferenceList.size(); simSlotNumber++) { final Preference simStatusPreference = mPreferenceList.get(simSlotNumber); simStatusPreference.setTitle(getPreferenceTitle(simSlotNumber)); simStatusPreference.setSummary(getPhoneNumber(simSlotNumber)); } } SimStatusDialogFragment.show(mFragment, getSimSlot(), getPreferenceTitle()); return true; private CharSequence getPhoneNumber(int simSlot) { final SubscriptionInfo subscriptionInfo = getSubscriptionInfo(simSlot); if (subscriptionInfo == null) { return mContext.getString(R.string.device_info_default); } /** * @return The preference title for the displayed preference. */ protected abstract String getPreferenceTitle(); return getFormattedPhoneNumber(subscriptionInfo); } /** * @return The sim slot to retrieve sim status information about. */ protected abstract int getSimSlot(); private CharSequence getPreferenceTitle(int simSlot) { return mTelephonyManager.getPhoneCount() > 1 ? mContext.getString( R.string.status_number_sim_slot, simSlot + 1) : mContext.getString( R.string.status_number); } private CharSequence getCarrierName() { @VisibleForTesting SubscriptionInfo getSubscriptionInfo(int simSlot) { final List<SubscriptionInfo> subscriptionInfoList = mSubscriptionManager.getActiveSubscriptionInfoList(); if (subscriptionInfoList != null) { for (SubscriptionInfo info : subscriptionInfoList) { if (info.getSimSlotIndex() == getSimSlot()) { return info.getCarrierName(); if (info.getSimSlotIndex() == simSlot) { return info; } } } return null; } return mContext.getText(R.string.device_info_not_available); @VisibleForTesting CharSequence getFormattedPhoneNumber(SubscriptionInfo subscriptionInfo) { final String phoneNumber = DeviceInfoUtils.getFormattedPhoneNumber(mContext, subscriptionInfo); return TextUtils.isEmpty(phoneNumber) ? mContext.getString(R.string.device_info_default) : phoneNumber; } @VisibleForTesting Preference createNewPreference(Context context) { return new Preference(context); } }
src/com/android/settings/deviceinfo/imei/AbstractImeiInfoPreferenceController.javadeleted 100644 → 0 +0 −99 Original line number Diff line number Diff line /* * Copyright (C) 2017 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.deviceinfo.imei; import static android.telephony.TelephonyManager.PHONE_TYPE_CDMA; import android.app.Fragment; import android.content.Context; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.telephony.TelephonyManager; import android.text.TextUtils; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.deviceinfo.AbstractSimStatusImeiInfoPreferenceController; /** * Controller that manages preference for single and dual sim devices. */ public abstract class AbstractImeiInfoPreferenceController extends AbstractSimStatusImeiInfoPreferenceController implements PreferenceControllerMixin { protected final boolean mIsMultiSim; protected final TelephonyManager mTelephonyManager; private Preference mPreference; private Fragment mFragment; public AbstractImeiInfoPreferenceController(Context context, Fragment fragment) { super(context); mFragment = fragment; mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); mIsMultiSim = mTelephonyManager.getPhoneCount() > 1; } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); if (mPreference == null) { return; } final int phoneType = mTelephonyManager.getPhoneType(); if (phoneType == PHONE_TYPE_CDMA) { mPreference.setTitle(getTitleForCdmaPhone()); mPreference.setSummary(getMeid()); } else { // GSM phone mPreference.setTitle(getTitleForGsmPhone()); mPreference.setSummary(mTelephonyManager.getImei(getSimSlot())); } } @Override public boolean handlePreferenceTreeClick(Preference preference) { if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) { return false; } ImeiInfoDialogFragment.show(mFragment, getSimSlot(), mPreference.getTitle().toString()); return true; } /** * @return The preference title for phones based on CDMA technology. */ protected abstract String getTitleForCdmaPhone(); /** * @return The preference title for phones based on GSM technology. */ protected abstract String getTitleForGsmPhone(); /** * @return The sim slot to retrieve IMEI/CDMA information about. */ protected abstract int getSimSlot(); @VisibleForTesting String getMeid() { return mTelephonyManager.getMeid(getSimSlot()); } }