2 * Copyright (C) 2014 The Android Open Source Project
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package com.android.settings.deviceinfo;
18 import com.android.internal.telephony.Phone;
19 import com.android.internal.telephony.PhoneConstants;
20 import com.android.internal.telephony.PhoneFactory;
22 import android.content.Context;
23 import android.os.Bundle;
24 import android.preference.Preference;
25 import android.preference.PreferenceActivity;
26 import android.preference.PreferenceScreen;
27 import android.telephony.SubscriptionInfo;
28 import android.telephony.SubscriptionManager;
29 import android.telephony.TelephonyManager;
30 import android.text.TextUtils;
31 import android.util.Log;
33 import com.android.settings.R;
34 import java.util.List;
36 public class ImeiInformation extends PreferenceActivity {
38 private static final String KEY_PRL_VERSION = "prl_version";
39 private static final String KEY_MIN_NUMBER = "min_number";
40 private static final String KEY_MEID_NUMBER = "meid_number";
41 private static final String KEY_ICC_ID = "icc_id";
42 private static final String KEY_IMEI = "imei";
43 private static final String KEY_IMEI_SV = "imei_sv";
45 private SubscriptionManager mSubscriptionManager;
46 private boolean isMultiSIM = false;
49 protected void onCreate(Bundle savedInstanceState) {
50 super.onCreate(savedInstanceState);
51 mSubscriptionManager = SubscriptionManager.from(this);
52 final TelephonyManager telephonyManager =
53 (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
54 initPreferenceScreen(telephonyManager.getSimCount());
57 // Since there are multiple phone for dsds, therefore need to show information for different
59 private void initPreferenceScreen(int slotCount) {
60 isMultiSIM = (slotCount > 1);
61 for (int slotId = 0; slotId < slotCount; slotId ++) {
62 addPreferencesFromResource(R.xml.device_info_phone_status);
63 setPreferenceValue(slotId);
68 private void setPreferenceValue(int phoneId) {
69 final Phone phone = PhoneFactory.getPhone(phoneId);
72 if (phone.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
73 setSummaryText(KEY_MEID_NUMBER, phone.getMeid());
74 setSummaryText(KEY_MIN_NUMBER, phone.getCdmaMin());
76 if (getResources().getBoolean(R.bool.config_msid_enable)) {
77 findPreference(KEY_MIN_NUMBER).setTitle(R.string.status_msid_number);
80 setSummaryText(KEY_PRL_VERSION, phone.getCdmaPrlVersion());
81 removePreferenceFromScreen(KEY_IMEI_SV);
83 if (phone.getLteOnCdmaMode() == PhoneConstants.LTE_ON_CDMA_TRUE) {
84 // Show ICC ID and IMEI for LTE device
85 setSummaryText(KEY_ICC_ID, phone.getIccSerialNumber());
86 setSummaryText(KEY_IMEI, phone.getImei());
88 // device is not GSM/UMTS, do not display GSM/UMTS features
89 // check Null in case no specified preference in overlay xml
90 removePreferenceFromScreen(KEY_IMEI);
91 removePreferenceFromScreen(KEY_ICC_ID);
94 setSummaryText(KEY_IMEI, phone.getDeviceId());
95 setSummaryText(KEY_IMEI_SV,
96 ((TelephonyManager) getSystemService(TELEPHONY_SERVICE))
97 .getDeviceSoftwareVersion(phoneId));
98 // device is not CDMA, do not display CDMA features
99 // check Null in case no specified preference in overlay xml
100 removePreferenceFromScreen(KEY_PRL_VERSION);
101 removePreferenceFromScreen(KEY_MEID_NUMBER);
102 removePreferenceFromScreen(KEY_MIN_NUMBER);
103 removePreferenceFromScreen(KEY_ICC_ID);
108 // Modify the preference key with prefix "_", so new added information preference can be set
109 // related phone information.
110 private void setNewKey(int slotId) {
111 final PreferenceScreen prefScreen = getPreferenceScreen();
112 final int count = prefScreen.getPreferenceCount();
113 for (int i = 0; i < count; i++) {
114 Preference pref = prefScreen.getPreference(i);
115 String key = pref.getKey();
116 if (!key.startsWith("_")){
117 key = "_" + key + String.valueOf(slotId);
119 updateTitle(pref, slotId);
124 private void updateTitle(Preference pref, int slotId) {
126 String title = pref.getTitle().toString();
128 // Slot starts from 1, slotId starts from 0 so plus 1
129 title += " " + getResources().getString(R.string.slot_number, slotId + 1);
131 pref.setTitle(title);
135 private void setSummaryText(String key, String text) {
136 final Preference preference = findPreference(key);
138 if (TextUtils.isEmpty(text)) {
139 text = getResources().getString(R.string.device_info_default);
142 if (preference != null) {
143 preference.setSummary(text);
148 * Removes the specified preference, if it exists.
149 * @param key the key for the Preference item
151 private void removePreferenceFromScreen(String key) {
152 final Preference preference = findPreference(key);
153 if (preference != null) {
154 getPreferenceScreen().removePreference(preference);