blob: 630b67e9307bd53ef1c5cf12a91366ebaa6a8768 [file] [log] [blame]
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -08001/*
2 * Copyright (C) 2008 The Android Open Source Project
3 *
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
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
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.
15 */
16
17package com.android.settings;
18
Amith Yamasanid7993472010-08-18 13:59:28 -070019import android.app.Activity;
Fan Zhangb00811d2017-02-28 10:52:46 -080020import android.app.Fragment;
Dianne Hackborncaefa9b2012-10-10 15:05:42 -070021import android.content.Context;
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -080022import android.content.Intent;
Fabrice Di Megliob2385ea2014-05-30 15:30:12 -070023import android.provider.SearchIndexableResource;
jeffreyhuangd81622e2017-10-19 13:36:40 -070024import android.util.FeatureFlagUtils;
Christopher Tateffe701d2015-08-20 16:38:37 -070025
Tamas Berghammer265d3c22016-06-22 15:34:45 +010026import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
Fan Zhangc62e2f02017-02-22 18:16:46 -080027import com.android.settings.dashboard.DashboardFragment;
Fan Zhangd53859d2017-03-23 16:42:13 -070028import com.android.settings.dashboard.SummaryLoader;
Fan Zhang66b573a2016-10-06 16:33:13 -070029import com.android.settings.deviceinfo.AdditionalSystemUpdatePreferenceController;
Fan Zhangefb8d622017-02-23 17:50:27 -080030import com.android.settings.deviceinfo.BasebandVersionPreferenceController;
Fan Zhang3aa68c82016-10-25 12:45:00 -070031import com.android.settings.deviceinfo.BuildNumberPreferenceController;
Fan Zhangefb8d622017-02-23 17:50:27 -080032import com.android.settings.deviceinfo.DeviceModelPreferenceController;
33import com.android.settings.deviceinfo.FccEquipmentIdPreferenceController;
Fan Zhang69e95c62017-02-23 16:05:30 -080034import com.android.settings.deviceinfo.FeedbackPreferenceController;
Fan Zhangefb8d622017-02-23 17:50:27 -080035import com.android.settings.deviceinfo.FirmwareVersionPreferenceController;
Fan Zhang69e95c62017-02-23 16:05:30 -080036import com.android.settings.deviceinfo.KernelVersionPreferenceController;
Fan Zhangc62e2f02017-02-22 18:16:46 -080037import com.android.settings.deviceinfo.ManualPreferenceController;
Fan Zhangefb8d622017-02-23 17:50:27 -080038import com.android.settings.deviceinfo.RegulatoryInfoPreferenceController;
Fan Zhangefb8d622017-02-23 17:50:27 -080039import com.android.settings.deviceinfo.SafetyInfoPreferenceController;
Fan Zhangefb8d622017-02-23 17:50:27 -080040import com.android.settings.deviceinfo.SecurityPatchPreferenceController;
Fabrice Di Megliob2385ea2014-05-30 15:30:12 -070041import com.android.settings.search.BaseSearchIndexProvider;
42import com.android.settings.search.Indexable;
Tony Mantler1d583e12017-06-13 13:09:25 -070043import com.android.settingslib.core.AbstractPreferenceController;
Juan Lang777ed252017-05-09 15:42:36 -070044import com.android.settingslib.core.lifecycle.Lifecycle;
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -080045
Fabrice Di Megliob2385ea2014-05-30 15:30:12 -070046import java.util.ArrayList;
47import java.util.Arrays;
Rajat Dewanb42573d2014-04-29 20:32:37 -070048import java.util.List;
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -080049
Fan Zhangc62e2f02017-02-22 18:16:46 -080050public class DeviceInfoSettings extends DashboardFragment implements Indexable {
Amith Yamasanic06d4c42011-02-25 14:35:20 -080051
jeffreyhuangf6d360e2017-10-19 16:44:59 -070052 public static final String DEVICE_INFO_V2_FEATURE_FLAG = "device_info_v2";
53
Gilles Debunne362bd102011-06-22 10:12:04 -070054 private static final String LOG_TAG = "DeviceInfoSettings";
Amith Yamasani2397a732011-09-27 16:02:25 -070055
Matthew Fritze2e897582017-05-11 17:15:45 -070056 private static final String KEY_LEGAL_CONTAINER = "legal_container";
57
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -080058 @Override
Fan Zhang65076132016-08-08 10:25:13 -070059 public int getMetricsCategory() {
Chris Wren9d1bfd12016-01-26 18:04:01 -050060 return MetricsEvent.DEVICEINFO;
Chris Wren8a963ba2015-03-20 10:29:14 -040061 }
62
63 @Override
Jason Monk23acc2b2015-04-14 15:06:39 -040064 protected int getHelpResource() {
65 return R.string.help_uri_about;
66 }
67
68 @Override
Fan Zhang3aa68c82016-10-25 12:45:00 -070069 public void onActivityResult(int requestCode, int resultCode, Intent data) {
Fan Zhangb00811d2017-02-28 10:52:46 -080070 final BuildNumberPreferenceController buildNumberPreferenceController =
71 getPreferenceController(BuildNumberPreferenceController.class);
72 if (buildNumberPreferenceController.onActivityResult(requestCode, resultCode, data)) {
Fan Zhang3aa68c82016-10-25 12:45:00 -070073 return;
74 }
75 super.onActivityResult(requestCode, resultCode, data);
76 }
77
78 @Override
Fan Zhangc62e2f02017-02-22 18:16:46 -080079 protected String getLogTag() {
80 return LOG_TAG;
81 }
82
83 @Override
84 protected int getPreferenceScreenResId() {
jeffreyhuangd81622e2017-10-19 13:36:40 -070085 return FeatureFlagUtils.isEnabled(DEVICE_INFO_V2_FEATURE_FLAG)
86 ? R.xml.device_info_settings_v2 : R.xml.device_info_settings;
Fan Zhangc62e2f02017-02-22 18:16:46 -080087 }
88
89 @Override
Tony Mantler1d583e12017-06-13 13:09:25 -070090 protected List<AbstractPreferenceController> getPreferenceControllers(Context context) {
Fan Zhangb00811d2017-02-28 10:52:46 -080091 return buildPreferenceControllers(context, getActivity(), this /* fragment */,
92 getLifecycle());
Doris Linge3751a12016-12-28 11:15:43 -080093 }
94
Fan Zhangd53859d2017-03-23 16:42:13 -070095 private static class SummaryProvider implements SummaryLoader.SummaryProvider {
96
97 private final SummaryLoader mSummaryLoader;
98
99 public SummaryProvider(SummaryLoader summaryLoader) {
100 mSummaryLoader = summaryLoader;
101 }
102
103 @Override
104 public void setListening(boolean listening) {
105 if (listening) {
106 mSummaryLoader.setSummary(this, DeviceModelPreferenceController.getDeviceModel());
107 }
108 }
109 }
110
111 public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY
112 = new SummaryLoader.SummaryProviderFactory() {
113 @Override
114 public SummaryLoader.SummaryProvider createSummaryProvider(Activity activity,
115 SummaryLoader summaryLoader) {
116 return new SummaryProvider(summaryLoader);
117 }
118 };
119
Tony Mantler1d583e12017-06-13 13:09:25 -0700120 private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
Fan Zhangb00811d2017-02-28 10:52:46 -0800121 Activity activity, Fragment fragment, Lifecycle lifecycle) {
jeffreyhuangd81622e2017-10-19 13:36:40 -0700122 if (FeatureFlagUtils.isEnabled(DEVICE_INFO_V2_FEATURE_FLAG)) {
123 final List<AbstractPreferenceController> controllers = new ArrayList<>();
jeffreyhuang931681a2017-10-19 14:46:32 -0700124
125 // Device name
126
127 // Phone number
128
129 // SIM status
130
jeffreyhuangf6d360e2017-10-19 16:44:59 -0700131 controllers.add(new DeviceModelPreferenceController(context, fragment));
jeffreyhuang931681a2017-10-19 14:46:32 -0700132
133 // IMEI
134
135 // Android version
136
137 // IP address
138
139 // Wifi MAC address
140
141 // Bluetooth Address
142
143 controllers.add(new RegulatoryInfoPreferenceController(context));
144
145 controllers.add(new SafetyInfoPreferenceController(context));
146
147 controllers.add(
148 new BuildNumberPreferenceController(context, activity, fragment, lifecycle));
149
jeffreyhuangd81622e2017-10-19 13:36:40 -0700150 return controllers;
151 }
152
Tony Mantler1d583e12017-06-13 13:09:25 -0700153 final List<AbstractPreferenceController> controllers = new ArrayList<>();
Fan Zhangb00811d2017-02-28 10:52:46 -0800154 controllers.add(
155 new BuildNumberPreferenceController(context, activity, fragment, lifecycle));
156 controllers.add(new AdditionalSystemUpdatePreferenceController(context));
157 controllers.add(new ManualPreferenceController(context));
158 controllers.add(new FeedbackPreferenceController(fragment, context));
159 controllers.add(new KernelVersionPreferenceController(context));
160 controllers.add(new BasebandVersionPreferenceController(context));
161 controllers.add(new FirmwareVersionPreferenceController(context, lifecycle));
162 controllers.add(new RegulatoryInfoPreferenceController(context));
Fan Zhangdc5a06e2017-03-07 14:52:51 -0800163 controllers.add(new DeviceModelPreferenceController(context, fragment));
Fan Zhangb00811d2017-02-28 10:52:46 -0800164 controllers.add(new SecurityPatchPreferenceController(context));
165 controllers.add(new FccEquipmentIdPreferenceController(context));
Fan Zhangb00811d2017-02-28 10:52:46 -0800166 controllers.add(new SafetyInfoPreferenceController(context));
167 return controllers;
168 }
169
Amith Yamasani2397a732011-09-27 16:02:25 -0700170 /**
Fabrice Di Megliob2385ea2014-05-30 15:30:12 -0700171 * For Search.
172 */
173 public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
Fan Zhangefb8d622017-02-23 17:50:27 -0800174 new BaseSearchIndexProvider() {
Fabrice Di Megliob2385ea2014-05-30 15:30:12 -0700175
Fan Zhangefb8d622017-02-23 17:50:27 -0800176 @Override
177 public List<SearchIndexableResource> getXmlResourcesToIndex(
178 Context context, boolean enabled) {
179 final SearchIndexableResource sir = new SearchIndexableResource(context);
180 sir.xmlResId = R.xml.device_info_settings;
181 return Arrays.asList(sir);
Fabrice Di Megliob2385ea2014-05-30 15:30:12 -0700182 }
Fan Zhang69e95c62017-02-23 16:05:30 -0800183
Fan Zhangefb8d622017-02-23 17:50:27 -0800184 @Override
jeffreyhuangd81622e2017-10-19 13:36:40 -0700185 public List<AbstractPreferenceController> getPreferenceControllers(
186 Context context) {
Fan Zhangb00811d2017-02-28 10:52:46 -0800187 return buildPreferenceControllers(context, null /*activity */,
188 null /* fragment */, null /* lifecycle */);
Fan Zhangefb8d622017-02-23 17:50:27 -0800189 }
Matthew Fritze2e897582017-05-11 17:15:45 -0700190
191 @Override
192 public List<String> getNonIndexableKeys(Context context) {
193 List<String> keys = super.getNonIndexableKeys(context);
194 keys.add(KEY_LEGAL_CONTAINER);
195 return keys;
196 }
Fan Zhangefb8d622017-02-23 17:50:27 -0800197 };
The Android Open Source Projectafc4ab22009-03-03 19:32:34 -0800198}