1 /* 2 * Copyright (C) 2016 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 17 package com.android.settings.enterprise; 18 19 import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_ACTION_ACCESS_CAMERA; 20 import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_ACTION_ACCESS_LOCATION; 21 import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_ACTION_ACCESS_MICROPHONE; 22 import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_ACTION_APPS_INSTALLED; 23 import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_ACTION_SET_CURRENT_INPUT_METHOD; 24 import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_ACTION_SET_DEFAULT_APPS; 25 import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_ACTION_SET_HTTP_PROXY; 26 import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_CAN_LOCK_DEVICE; 27 import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_CAN_SEE_APPS_WARNING; 28 import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_CAN_SEE_BUG_REPORT_WARNING; 29 import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_CAN_SEE_NETWORK_LOGS_WARNING; 30 import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_CAN_SEE_SECURITY_LOGS_WARNING; 31 import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_CAN_SEE_USAGE_WARNING; 32 import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_CAN_SEE_WORK_DATA_WARNING; 33 import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_CAN_WIPE_DEVICE; 34 import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_CONFIGURED_FAILED_PASSWORD_WIPE_DEVICE; 35 import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_CONFIGURED_FAILED_PASSWORD_WIPE_WORK_PROFILE; 36 import static android.app.admin.DevicePolicyResources.Strings.Settings.ALWAYS_ON_VPN_WORK_PROFILE; 37 import static android.app.admin.DevicePolicyResources.Strings.Settings.CA_CERTS_PERSONAL_PROFILE; 38 import static android.app.admin.DevicePolicyResources.Strings.Settings.CA_CERTS_WORK_PROFILE; 39 import static android.app.admin.DevicePolicyResources.Strings.Settings.CHANGES_BY_ORGANIZATION_TITLE; 40 import static android.app.admin.DevicePolicyResources.Strings.Settings.ENTERPRISE_PRIVACY_FOOTER; 41 import static android.app.admin.DevicePolicyResources.Strings.Settings.INFORMATION_SEEN_BY_ORGANIZATION_TITLE; 42 import static android.app.admin.DevicePolicyResources.Strings.Settings.MANAGED_DEVICE_INFO; 43 import static android.app.admin.DevicePolicyResources.Strings.Settings.YOUR_ACCESS_TO_THIS_DEVICE_TITLE; 44 45 import android.app.settings.SettingsEnums; 46 import android.content.Context; 47 import android.os.Bundle; 48 import android.provider.SearchIndexableResource; 49 50 import com.android.internal.annotations.VisibleForTesting; 51 import com.android.settings.R; 52 import com.android.settings.dashboard.DashboardFragment; 53 import com.android.settings.overlay.FeatureFactory; 54 import com.android.settings.search.BaseSearchIndexProvider; 55 import com.android.settingslib.core.AbstractPreferenceController; 56 import com.android.settingslib.search.SearchIndexable; 57 58 import java.util.List; 59 60 @SearchIndexable 61 public class EnterprisePrivacySettings extends DashboardFragment { 62 63 static final String TAG = "EnterprisePrivacySettings"; 64 65 @VisibleForTesting 66 PrivacySettingsPreference mPrivacySettingsPreference; 67 68 @Override onAttach(Context context)69 public void onAttach(Context context) { 70 mPrivacySettingsPreference = 71 PrivacySettingsPreferenceFactory.createPrivacySettingsPreference(context); 72 73 super.onAttach(context); 74 } 75 76 @Override onCreate(Bundle icicle)77 public void onCreate(Bundle icicle) { 78 super.onCreate(icicle); 79 80 if (mPrivacySettingsPreference instanceof PrivacySettingsFinancedPreference) { 81 return; 82 } 83 84 replaceEnterprisePreferenceScreenTitle( 85 MANAGED_DEVICE_INFO, R.string.enterprise_privacy_settings); 86 87 replaceEnterpriseStringTitle("exposure_category", 88 INFORMATION_SEEN_BY_ORGANIZATION_TITLE, 89 R.string.enterprise_privacy_exposure_category); 90 replaceEnterpriseStringTitle("enterprise_privacy_enterprise_data", 91 ADMIN_CAN_SEE_WORK_DATA_WARNING, R.string.enterprise_privacy_enterprise_data); 92 replaceEnterpriseStringTitle("enterprise_privacy_installed_packages", 93 ADMIN_CAN_SEE_APPS_WARNING, R.string.enterprise_privacy_installed_packages); 94 replaceEnterpriseStringTitle("enterprise_privacy_usage_stats", 95 ADMIN_CAN_SEE_USAGE_WARNING, R.string.enterprise_privacy_usage_stats); 96 replaceEnterpriseStringTitle("network_logs", 97 ADMIN_CAN_SEE_NETWORK_LOGS_WARNING, R.string.enterprise_privacy_network_logs); 98 replaceEnterpriseStringTitle("bug_reports", 99 ADMIN_CAN_SEE_BUG_REPORT_WARNING, R.string.enterprise_privacy_bug_reports); 100 replaceEnterpriseStringTitle("security_logs", 101 ADMIN_CAN_SEE_SECURITY_LOGS_WARNING, R.string.enterprise_privacy_security_logs); 102 replaceEnterpriseStringTitle("exposure_changes_category", 103 CHANGES_BY_ORGANIZATION_TITLE, 104 R.string.enterprise_privacy_exposure_changes_category); 105 replaceEnterpriseStringTitle("number_enterprise_installed_packages", 106 ADMIN_ACTION_APPS_INSTALLED, 107 R.string.enterprise_privacy_enterprise_installed_packages); 108 replaceEnterpriseStringTitle("enterprise_privacy_number_location_access_packages", 109 ADMIN_ACTION_ACCESS_LOCATION, R.string.enterprise_privacy_location_access); 110 replaceEnterpriseStringTitle("enterprise_privacy_number_microphone_access_packages", 111 ADMIN_ACTION_ACCESS_MICROPHONE, R.string.enterprise_privacy_microphone_access); 112 replaceEnterpriseStringTitle("enterprise_privacy_number_camera_access_packages", 113 ADMIN_ACTION_ACCESS_CAMERA, R.string.enterprise_privacy_camera_access); 114 replaceEnterpriseStringTitle("number_enterprise_set_default_apps", 115 ADMIN_ACTION_SET_DEFAULT_APPS, 116 R.string.enterprise_privacy_enterprise_set_default_apps); 117 replaceEnterpriseStringTitle("always_on_vpn_managed_profile", 118 ALWAYS_ON_VPN_WORK_PROFILE, R.string.enterprise_privacy_always_on_vpn_work); 119 replaceEnterpriseStringTitle("input_method", 120 ADMIN_ACTION_SET_CURRENT_INPUT_METHOD, R.string.enterprise_privacy_input_method); 121 replaceEnterpriseStringTitle("global_http_proxy", 122 ADMIN_ACTION_SET_HTTP_PROXY, R.string.enterprise_privacy_global_http_proxy); 123 replaceEnterpriseStringTitle("ca_certs_current_user", 124 CA_CERTS_PERSONAL_PROFILE, R.string.enterprise_privacy_ca_certs_personal); 125 replaceEnterpriseStringTitle("ca_certs_managed_profile", 126 CA_CERTS_WORK_PROFILE, R.string.enterprise_privacy_ca_certs_work); 127 replaceEnterpriseStringTitle("device_access_category", 128 YOUR_ACCESS_TO_THIS_DEVICE_TITLE, 129 R.string.enterprise_privacy_device_access_category); 130 replaceEnterpriseStringTitle("enterprise_privacy_lock_device", 131 ADMIN_CAN_LOCK_DEVICE, R.string.enterprise_privacy_lock_device); 132 replaceEnterpriseStringTitle("enterprise_privacy_wipe_device", 133 ADMIN_CAN_WIPE_DEVICE, R.string.enterprise_privacy_wipe_device); 134 replaceEnterpriseStringTitle("failed_password_wipe_current_user", 135 ADMIN_CONFIGURED_FAILED_PASSWORD_WIPE_DEVICE, 136 R.string.enterprise_privacy_failed_password_wipe_device); 137 replaceEnterpriseStringTitle("failed_password_wipe_managed_profile", 138 ADMIN_CONFIGURED_FAILED_PASSWORD_WIPE_WORK_PROFILE, 139 R.string.enterprise_privacy_failed_password_wipe_work); 140 replaceEnterpriseStringTitle("enterprise_privacy_footer", 141 ENTERPRISE_PRIVACY_FOOTER, R.string.enterprise_privacy_header); 142 } 143 144 @Override onDetach()145 public void onDetach() { 146 mPrivacySettingsPreference = null; 147 super.onDetach(); 148 } 149 150 @Override getMetricsCategory()151 public int getMetricsCategory() { 152 return SettingsEnums.ENTERPRISE_PRIVACY_SETTINGS; 153 } 154 155 @Override getLogTag()156 protected String getLogTag() { 157 return TAG; 158 } 159 160 @Override getPreferenceScreenResId()161 protected int getPreferenceScreenResId() { 162 return mPrivacySettingsPreference.getPreferenceScreenResId(); 163 } 164 165 @Override createPreferenceControllers(Context context)166 protected List<AbstractPreferenceController> createPreferenceControllers(Context context) { 167 return mPrivacySettingsPreference.createPreferenceControllers(true /* async */); 168 } 169 isPageEnabled(Context context)170 public static boolean isPageEnabled(Context context) { 171 return FeatureFactory.getFeatureFactory() 172 .getEnterprisePrivacyFeatureProvider() 173 .hasDeviceOwner(); 174 } 175 176 public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = 177 new BaseSearchIndexProvider() { 178 179 private PrivacySettingsPreference mPrivacySettingsPreference; 180 181 @Override 182 protected boolean isPageSearchEnabled(Context context) { 183 return isPageEnabled(context); 184 } 185 186 @Override 187 public List<SearchIndexableResource> getXmlResourcesToIndex(Context context, 188 boolean enabled) { 189 mPrivacySettingsPreference = 190 PrivacySettingsPreferenceFactory.createPrivacySettingsPreference( 191 context); 192 return mPrivacySettingsPreference.getXmlResourcesToIndex(); 193 } 194 195 @Override 196 public List<AbstractPreferenceController> createPreferenceControllers( 197 Context context) { 198 mPrivacySettingsPreference = 199 PrivacySettingsPreferenceFactory.createPrivacySettingsPreference( 200 context); 201 return mPrivacySettingsPreference.createPreferenceControllers( 202 false /* async */); 203 } 204 }; 205 } 206