private PreferenceScreen createPreferenceHierarchy() { PreferenceScreen root = getPreferenceScreen(); if (root != null) { root.removeAll(); } // Location Settings addPreferencesFromResource(R.xml.location_settings); addPreferencesFromResource(R.xml.security_settings); root = getPreferenceScreen(); // Location Settings mNetwork = (CheckBoxPreference) root.findPreference(KEY_LOCATION_NETWORK); mGps = (CheckBoxPreference) root.findPreference(KEY_LOCATION_GPS); mAssistedGps = (CheckBoxPreference) root.findPreference(KEY_ASSISTED_GPS); if (GoogleLocationSettingHelper.isAvailable(getActivity())) { // GSF present, Add setting for 'Use My Location' CheckBoxPreference useLocation = new CheckBoxPreference(getActivity()); useLocation.setKey(KEY_USE_LOCATION); useLocation.setTitle(R.string.use_location_title); useLocation.setSummary(R.string.use_location_summary); useLocation.setChecked( GoogleLocationSettingHelper.getUseLocationForServices(getActivity()) == GoogleLocationSettingHelper.USE_LOCATION_FOR_SERVICES_ON); useLocation.setPersistent(false); useLocation.setOnPreferenceChangeListener(this); getPreferenceScreen().addPreference(useLocation); mUseLocation = useLocation; } // Change the summary for wifi-only devices if (Utils.isWifiOnly(getActivity())) { mNetwork.setSummaryOn(R.string.location_neighborhood_level_wifi); } // Security Settings // Add options for lock/unlock screen int resid = 0; if (!mLockPatternUtils.isSecure()) { if (mLockPatternUtils.isLockScreenDisabled()) { resid = R.xml.security_settings_lockscreen; } else { resid = R.xml.security_settings_chooser; } } else if (mLockPatternUtils.usingBiometricWeak() && mLockPatternUtils.isBiometricWeakInstalled()) { resid = R.xml.security_settings_biometric_weak; } else { switch (mLockPatternUtils.getKeyguardStoredPasswordQuality()) { case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING: resid = R.xml.security_settings_pattern; break; case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC: resid = R.xml.security_settings_pin; break; case DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC: case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC: case DevicePolicyManager.PASSWORD_QUALITY_COMPLEX: resid = R.xml.security_settings_password; break; } } addPreferencesFromResource(resid); boolean isSystemEmmcDetect = false; try { Class c = Class.forName(SYSTEM_DETECT_HANDLER); ISystemInfoDetectHandler handler = (ISystemInfoDetectHandler) c.newInstance(); isSystemEmmcDetect = handler.isFileSystemAutoDetect(); Log.i("SecuritySettings", "isSystemEmmcDetect = " + isSystemEmmcDetect); } catch (Exception e) { Log.i("SecuritySettings", "exception " + e); isSystemEmmcDetect = false; } if ((DefaultQuery.SYSTEM_INFO_DETECT_ENABLED == 1) || ((DefaultQuery.SYSTEM_INFO_DETECT_ENABLED == 2) && isSystemEmmcDetect)) { // Add options for device encryption DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); switch (dpm.getStorageEncryptionStatus()) { case DevicePolicyManager.ENCRYPTION_STATUS_ACTIVE: // The device is currently encrypted. addPreferencesFromResource(R.xml.security_settings_encrypted); break; case DevicePolicyManager.ENCRYPTION_STATUS_INACTIVE: // This device supports encryption but isn't encrypted. addPreferencesFromResource(R.xml.security_settings_unencrypted); break; } } // lock after preference mLockAfter = (ListPreference) root.findPreference(KEY_LOCK_AFTER_TIMEOUT); if (mLockAfter != null) { setupLockAfterPreference(); updateLockAfterPreferenceSummary(); } // visible pattern mVisiblePattern = (CheckBoxPreference) root.findPreference(KEY_VISIBLE_PATTERN); // lock instantly on power key press mPowerButtonInstantlyLocks = (CheckBoxPreference) root.findPreference(KEY_POWER_INSTANTLY_LOCKS); // don't display visible pattern if biometric and backup is not // pattern if (resid == R.xml.security_settings_biometric_weak && mLockPatternUtils.getKeyguardStoredPasswordQuality() != DevicePolicyManager.PASSWORD_QUALITY_SOMETHING) { PreferenceGroup securityCategory = (PreferenceGroup) root.findPreference(KEY_SECURITY_CATEGORY); if (securityCategory != null && mVisiblePattern != null) { securityCategory.removePreference(root.findPreference(KEY_VISIBLE_PATTERN)); } } // tactile feedback. Should be common to all unlock preference // screens. mTactileFeedback = (CheckBoxPreference) root.findPreference(KEY_TACTILE_FEEDBACK_ENABLED); if (!((Vibrator) getSystemService(Context.VIBRATOR_SERVICE)).hasVibrator()) { PreferenceGroup securityCategory = (PreferenceGroup) root.findPreference(KEY_SECURITY_CATEGORY); if (securityCategory != null && mTactileFeedback != null) { securityCategory.removePreference(mTactileFeedback); } } // Append the rest of the settings addPreferencesFromResource(R.xml.security_settings_misc); MSimTelephonyManager tm = MSimTelephonyManager.getDefault(); int numPhones = TelephonyManager.getDefault().getPhoneCount(); boolean disableLock = false; for (int i = 0; i < numPhones; i++) { // Disable SIM lock if sim card is missing or unknown // notice:cdma can also set sim lock if ((tm.getSimState(i) == TelephonyManager.SIM_STATE_ABSENT) || (tm.getSimState(i) == TelephonyManager.SIM_STATE_UNKNOWN)) { disableLock = true; } else { disableLock = false; break; } } if (disableLock) { root.findPreference(KEY_SIM_LOCK).setEnabled(false); } // Show password mShowPassword = (CheckBoxPreference) root.findPreference(KEY_SHOW_PASSWORD); // SIM/RUIM lock Preference iccLock = (Preference) root.findPreference(KEY_SIM_LOCK_SETTINGS); Intent intent = new Intent(); if (tm.isMultiSimEnabled()) { intent.setClassName( "com.android.settings", "com.android.settings.multisimsettings.MultiSimSettingTab"); intent.putExtra(SelectSubscription.PACKAGE, "com.android.settings"); intent.putExtra(SelectSubscription.TARGET_CLASS, "com.android.settings.IccLockSettings"); } else { intent.setClassName("com.android.settings", "com.android.settings.IccLockSettings"); } iccLock.setIntent(intent); // Credential storage mResetCredentials = root.findPreference(KEY_RESET_CREDENTIALS); mToggleAppInstallation = (CheckBoxPreference) findPreference(KEY_TOGGLE_INSTALL_APPLICATIONS); mToggleAppInstallation.setChecked(isNonMarketAppsAllowed()); return root; }
/** * Shows TalkBack's abbreviated version number in the action bar, and the full version number in * the Play Store button. */ private void showTalkBackVersion() { try { final PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0); final ActionBar actionBar = getActionBar(); if (actionBar != null) { actionBar.setSubtitle( getString(R.string.talkback_preferences_subtitle, packageInfo.versionName)); } final Preference playStoreButton = findPreferenceByResId(R.string.pref_play_store_key); if (playStoreButton == null) { return; } if (GooglePlayServicesUtil.isGooglePlayServicesAvailable(this) != ConnectionResult.SUCCESS) { // Not needed, but playing safe since this is hard to test outside of China playStoreButton.setIntent(null); final PreferenceGroup category = (PreferenceGroup) findPreferenceByResId(R.string.pref_category_miscellaneous_key); if (category != null) { category.removePreference(playStoreButton); } } if (playStoreButton.getIntent() != null && getPackageManager().queryIntentActivities(playStoreButton.getIntent(), 0).size() == 0) { // Not needed, but playing safe since this is hard to test outside of China playStoreButton.setIntent(null); final PreferenceGroup category = (PreferenceGroup) findPreferenceByResId(R.string.pref_category_miscellaneous_key); if (category != null) { category.removePreference(playStoreButton); } } else { final String versionNumber = String.valueOf(packageInfo.versionCode); final int length = versionNumber.length(); playStoreButton.setSummary( getString( R.string.summary_pref_play_store, String.valueOf(Integer.parseInt(versionNumber.substring(0, length - 7))) + "." + String.valueOf( Integer.parseInt(versionNumber.substring(length - 7, length - 5))) + "." + String.valueOf( Integer.parseInt(versionNumber.substring(length - 5, length - 3))) + "." + String.valueOf(Integer.parseInt(versionNumber.substring(length - 3))))); } } catch (NameNotFoundException e) { // Nothing to do if we can't get the package name. } }
private void updateUserDictionaryPreference(Preference userDictionaryPreference) { final Activity activity = getActivity(); final TreeSet<String> localeList = UserDictionaryList.getUserDictionaryLocalesSet(activity); if (null == localeList) { // The locale list is null if and only if the user dictionary service is // not present or disabled. In this case we need to remove the preference. getPreferenceScreen().removePreference(userDictionaryPreference); } else if (localeList.size() <= 1) { final Intent intent = new Intent(UserDictionaryList.USER_DICTIONARY_SETTINGS_INTENT_ACTION); userDictionaryPreference.setTitle(R.string.user_dict_single_settings_title); userDictionaryPreference.setIntent(intent); userDictionaryPreference.setFragment( com.android.settings.UserDictionarySettings.class.getName()); // If the size of localeList is 0, we don't set the locale parameter in the // extras. This will be interpreted by the UserDictionarySettings class as // meaning "the current locale". // Note that with the current code for UserDictionaryList#getUserDictionaryLocalesSet() // the locale list always has at least one element, since it always includes the current // locale explicitly. @see UserDictionaryList.getUserDictionaryLocalesSet(). if (localeList.size() == 1) { final String locale = (String) localeList.toArray()[0]; userDictionaryPreference.getExtras().putString("locale", locale); } } else { userDictionaryPreference.setTitle(R.string.user_dict_multiple_settings_title); userDictionaryPreference.setFragment(UserDictionaryList.class.getName()); } }
/** * Touch exploration preference management code specific to devices running Jelly Bean and above. * * @param category The touch exploration category. */ @TargetApi(Build.VERSION_CODES.JELLY_BEAN) private void checkTouchExplorationSupportInner(PreferenceGroup category) { final CheckBoxPreference prefTouchExploration = (CheckBoxPreference) findPreferenceByResId(R.string.pref_explore_by_touch_reflect_key); if (prefTouchExploration == null) { return; } // Remove single-tap preference if it's not supported on this device. final CheckBoxPreference prefSingleTap = (CheckBoxPreference) findPreferenceByResId(R.string.pref_single_tap_key); if ((prefSingleTap != null) && (Build.VERSION.SDK_INT < ProcessorFocusAndSingleTap.MIN_API_LEVEL_SINGLE_TAP)) { category.removePreference(prefSingleTap); } // Ensure that changes to the reflected preference's checked state never // trigger content observers. prefTouchExploration.setPersistent(false); // Synchronize the reflected state. updateTouchExplorationState(); // Set up listeners that will keep the state synchronized. prefTouchExploration.setOnPreferenceChangeListener(mTouchExplorationChangeListener); // Hook in the external PreferenceActivity for gesture management final Preference shortcutsScreen = findPreferenceByResId(R.string.pref_category_manage_gestures_key); final Intent shortcutsIntent = new Intent(this, TalkBackShortcutPreferencesActivity.class); shortcutsScreen.setIntent(shortcutsIntent); }
@Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preference_screen); for (int i = 0; i < getPreferenceScreen().getPreferenceCount(); i++) { initSummary(getPreferenceScreen().getPreference(i)); } // Set start/stop service intents Preference startPreference = findPreference("PREF_START_SERVICE"); Intent startIntent = new Intent(getActivity().getApplication(), ServiceLauncher.class); startIntent.putExtra("Action", "Start"); startPreference.setIntent(startIntent); Preference stopPreference = findPreference("PREF_STOP_SERVICE"); Intent stopIntent = new Intent(getActivity().getApplication(), ServiceLauncher.class); stopIntent.putExtra("Action", "Stop"); stopPreference.setIntent(stopIntent); }
private void assignWebIntentToPreference(int preferenceId, String url) { Preference pref = findPreferenceByResId(preferenceId); if (pref == null) { return; } Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); if (!canHandleIntent(intent)) { intent = new Intent(this, WebActivity.class); intent.setData(Uri.parse(url)); } pref.setIntent(intent); }
private void handleManageSimMsg() { int phoneCount = mTelephonyManagers.size(); Log.e("SimListActivity", "handleManageSimMsg: phoneCount=" + phoneCount); for (int i = 0; i < phoneCount; ++i) { if (mTelephonyManagers.get(i).hasIccCard() && mTelephonyManagers.get(i).getSimState() == TelephonyManager.SIM_STATE_READY) { Preference preference = new Preference(this); String simName = generateSimName(i); preference.setTitle(simName); preference.setSummary(R.string.pref_title_manage_sim_messages); Intent intent = new Intent(this, ManageSimMessages.class); intent.putExtra(Phone.PHONE_ID, i); preference.setIntent(intent); mScreen.addPreference(preference); } } }
/** Assigns the appropriate intent to the label manager preference. */ private void assignLabelManagerIntent() { final PreferenceGroup category = (PreferenceGroup) findPreferenceByResId(R.string.pref_category_touch_exploration_key); final Preference prefManageLabels = findPreferenceByResId(R.string.pref_manage_labels_key); if ((category == null) || (prefManageLabels == null)) { return; } if (Build.VERSION.SDK_INT < LabelManagerSummaryActivity.MIN_API_LEVEL) { category.removePreference(prefManageLabels); return; } final Intent labelManagerIntent = new Intent(this, LabelManagerSummaryActivity.class); labelManagerIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); labelManagerIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); prefManageLabels.setIntent(labelManagerIntent); }
/** Assigns the appropriate intent to the tutorial preference. */ private void assignTutorialIntent() { final PreferenceGroup category = (PreferenceGroup) findPreferenceByResId(R.string.pref_category_miscellaneous_key); final Preference prefTutorial = findPreferenceByResId(R.string.pref_tutorial_key); if ((category == null) || (prefTutorial == null)) { return; } final int touchscreenState = getResources().getConfiguration().touchscreen; if (touchscreenState == Configuration.TOUCHSCREEN_NOTOUCH) { category.removePreference(prefTutorial); return; } final Intent tutorialIntent = new Intent(this, AccessibilityTutorialActivity.class); tutorialIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); tutorialIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); prefTutorial.setIntent(tutorialIntent); }
/** Assigns the appropriate intent to the keyboard shortcut preference. */ private void assignKeyboardShortcutIntent() { final PreferenceGroup category = (PreferenceGroup) findPreferenceByResId(R.string.pref_category_miscellaneous_key); final Preference keyboardShortcutPref = findPreferenceByResId(R.string.pref_category_manage_keyboard_shortcut_key); if ((category == null) || (keyboardShortcutPref == null)) { return; } if (Build.VERSION.SDK_INT < KeyComboManager.MIN_API_LEVEL) { category.removePreference(keyboardShortcutPref); return; } final Intent labelManagerIntent = new Intent(this, TalkBackKeyboardShortcutPreferencesActivity.class); labelManagerIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); labelManagerIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); keyboardShortcutPref.setIntent(labelManagerIntent); }
@Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (key.equals(KEY_PREF_SERVER_IP)) { Preference PrefIP = findPreference(key); PrefIP.setSummary(sharedPreferences.getString(key, "")); Preference PrefGetAPIKey = findPreference(key); Intent i = new Intent(Intent.ACTION_VIEW); i.setData( Uri.parse( sharedPreferences.getString(KEY_PREF_SERVER_IP, "") + ":" + sharedPreferences.getString(KEY_PREF_SERVER_PORT, "") + "/config/general/")); PrefGetAPIKey.setIntent(i); } else if (key.equals(KEY_PREF_SERVER_PORT)) { Preference Pref = findPreference(key); Pref.setSummary(sharedPreferences.getString(key, "")); } else if (key.equals(KEY_PREF_API_KEY)) { Preference Pref = findPreference(key); Pref.setSummary(sharedPreferences.getString(key, "")); } else if (key.equals(KEY_PREF_PAUSE_DURATION1)) { Preference Pref = findPreference(key); Pref.setSummary(sharedPreferences.getString(key, "")); } else if (key.equals(KEY_PREF_PAUSE_DURATION2)) { Preference Pref = findPreference(key); Pref.setSummary(sharedPreferences.getString(key, "")); } else if (key.equals(KEY_PREF_PAUSE_DURATION3)) { Preference Pref = findPreference(key); Pref.setSummary(sharedPreferences.getString(key, "")); } else if (key.equals(KEY_PREF_REFRESH_INTERVAL)) { Preference Pref = findPreference(key); Pref.setSummary(sharedPreferences.getString(key, "")); } try { PreferencesStore.getInstance().refreshSettings(); } catch (Exception e) { } }
private void addPluginPreferences(PreferenceScreen screen) { Intent queryIntent = new Intent(AstridApiConstants.ACTION_SETTINGS); PackageManager pm = getPackageManager(); List<ResolveInfo> resolveInfoList = pm.queryIntentActivities(queryIntent, PackageManager.GET_META_DATA); int length = resolveInfoList.size(); LinkedHashMap<String, ArrayList<Preference>> categoryPreferences = new LinkedHashMap<String, ArrayList<Preference>>(); // Loop through a list of all packages (including plugins, addons) // that have a settings action for (int i = 0; i < length; i++) { ResolveInfo resolveInfo = resolveInfoList.get(i); Intent intent = new Intent(AstridApiConstants.ACTION_SETTINGS); intent.setClassName(resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name); if (MilkPreferences.class.getName().equals(resolveInfo.activityInfo.name) && !MilkUtilities.INSTANCE.isLoggedIn()) continue; Preference preference = new Preference(this); preference.setTitle(resolveInfo.activityInfo.loadLabel(pm)); preference.setIntent(intent); String category = MetadataHelper.resolveActivityCategoryName(resolveInfo, pm); if (!categoryPreferences.containsKey(category)) categoryPreferences.put(category, new ArrayList<Preference>()); ArrayList<Preference> arrayList = categoryPreferences.get(category); arrayList.add(preference); } for (Entry<String, ArrayList<Preference>> entry : categoryPreferences.entrySet()) { Preference header = new Preference(this); header.setLayoutResource(android.R.layout.preference_category); header.setTitle(entry.getKey()); screen.addPreference(header); for (Preference preference : entry.getValue()) screen.addPreference(preference); } }
private void setPreferenceScreenType(Class<?> classObj, String key, int type) { Preference pf = findPreference(key); Intent it = new Intent(this, classObj); it.putExtra(PrefsLogic.EXTRA_PREFERENCE_TYPE, type); pf.setIntent(it); }
private void addPluginPreferences(PreferenceScreen screen) { Intent queryIntent = new Intent(AstridApiConstants.ACTION_SETTINGS); PackageManager pm = getPackageManager(); List<ResolveInfo> resolveInfoList = pm.queryIntentActivities(queryIntent, PackageManager.GET_META_DATA); int length = resolveInfoList.size(); LinkedHashMap<String, ArrayList<Preference>> categoryPreferences = new LinkedHashMap<String, ArrayList<Preference>>(); // Loop through a list of all packages (including plugins, addons) // that have a settings action String labsTitle = getString(R.string.EPr_labs_header); for (int i = 0; i < length; i++) { ResolveInfo resolveInfo = resolveInfoList.get(i); final Intent intent = new Intent(AstridApiConstants.ACTION_SETTINGS); intent.setClassName(resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name); if (MilkPreferences.class.getName().equals(resolveInfo.activityInfo.name) && !MilkUtilities.INSTANCE.isLoggedIn()) continue; if (GtasksPreferences.class.getName().equals(resolveInfo.activityInfo.name) && AmazonMarketStrategy.isKindleFire()) continue; if (ProducteevPreferences.class.getName().equals(resolveInfo.activityInfo.name) && !Preferences.getBoolean(R.string.p_third_party_addons, false) && !ProducteevUtilities.INSTANCE.isLoggedIn()) continue; Preference preference = new Preference(this); preference.setTitle(resolveInfo.activityInfo.loadLabel(pm)); if (labsTitle.equals(preference.getTitle())) preference.setSummary(R.string.EPr_labs_desc); try { Class<?> intentComponent = Class.forName(intent.getComponent().getClassName()); if (intentComponent.getSuperclass().equals(SyncProviderPreferences.class)) intentComponent = SyncProviderPreferences.class; if (PREFERENCE_REQUEST_CODES.containsKey(intentComponent)) { final int code = PREFERENCE_REQUEST_CODES.get(intentComponent); preference.setOnPreferenceClickListener( new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference pref) { startActivityForResult(intent, code); return true; } }); } else { preference.setIntent(intent); } } catch (ClassNotFoundException e) { preference.setIntent(intent); } String category = MetadataHelper.resolveActivityCategoryName(resolveInfo, pm); if (!categoryPreferences.containsKey(category)) categoryPreferences.put(category, new ArrayList<Preference>()); ArrayList<Preference> arrayList = categoryPreferences.get(category); arrayList.add(preference); } for (Entry<String, ArrayList<Preference>> entry : categoryPreferences.entrySet()) { Preference header = new Preference(this); header.setLayoutResource(android.R.layout.preference_category); header.setTitle(entry.getKey()); screen.addPreference(header); for (Preference preference : entry.getValue()) screen.addPreference(preference); } }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ContentResolver resolver = getContentResolver(); int activePhoneType = TelephonyManager.getDefault().getCurrentPhoneType(); mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); addPreferencesFromResource(R.xml.sound_settings); if (TelephonyManager.PHONE_TYPE_CDMA != activePhoneType) { // device is not CDMA, do not display CDMA emergency_tone getPreferenceScreen().removePreference(findPreference(KEY_EMERGENCY_TONE)); } mVolumeOverlay = (ListPreference) findPreference(KEY_VOLUME_OVERLAY); mVolumeOverlay.setOnPreferenceChangeListener(this); int volumeOverlay = Settings.System.getInt( getContentResolver(), Settings.System.MODE_VOLUME_OVERLAY, VolumePanel.VOLUME_OVERLAY_EXPANDABLE); mVolumeOverlay.setValue(Integer.toString(volumeOverlay)); mVolumeOverlay.setSummary(mVolumeOverlay.getEntry()); mRingMode = (ListPreference) findPreference(KEY_RING_MODE); if (!getResources().getBoolean(R.bool.has_silent_mode)) { getPreferenceScreen().removePreference(mRingMode); findPreference(KEY_RING_VOLUME).setDependency(null); } else { mRingMode.setOnPreferenceChangeListener(this); } if (getResources().getBoolean(com.android.internal.R.bool.config_useFixedVolume)) { // device with fixed volume policy, do not display volumes submenu getPreferenceScreen().removePreference(findPreference(KEY_RING_VOLUME)); } mQuietHours = (PreferenceScreen) findPreference(KEY_QUIET_HOURS); updateQuietHoursSummary(); mSoundEffects = (CheckBoxPreference) findPreference(KEY_SOUND_EFFECTS); if (!Utils.hasVolumeRocker(getActivity())) { getPreferenceScreen().removePreference(findPreference(KEY_VOLUME_ADJUST_SOUNDS)); } mRingtonePreference = findPreference(KEY_RINGTONE); mNotificationPreference = findPreference(KEY_NOTIFICATION_SOUND); Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); if (vibrator == null || !vibrator.hasVibrator()) { removePreference(KEY_VIBRATE); removePreference(KEY_HAPTIC_FEEDBACK); removePreference(KEY_VIBRATION_INTENSITY); removePreference(KEY_CONVERT_SOUND_TO_VIBRATE); removePreference(KEY_VIBRATE_DURING_CALLS); } else if (!VibratorIntensity.isSupported()) { removePreference(KEY_VIBRATION_INTENSITY); } if (TelephonyManager.PHONE_TYPE_CDMA == activePhoneType) { ListPreference emergencyTonePreference = (ListPreference) findPreference(KEY_EMERGENCY_TONE); emergencyTonePreference.setValue( String.valueOf( Settings.Global.getInt( resolver, Settings.Global.EMERGENCY_TONE, FALLBACK_EMERGENCY_TONE_VALUE))); emergencyTonePreference.setOnPreferenceChangeListener(this); } mSoundSettings = (PreferenceGroup) findPreference(KEY_SOUND_SETTINGS); mMusicFx = mSoundSettings.findPreference(KEY_MUSICFX); Intent i = new Intent(AudioEffect.ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL); mMusicFx.setIntent(i); PackageManager p = getPackageManager(); List<ResolveInfo> ris = p.queryIntentActivities(i, 0); if (ris.size() == 0) { mSoundSettings.removePreference(mMusicFx); } else if (ris.size() == 1) { mMusicFx.setSummary(ris.get(0).loadLabel(p)); } if (!Utils.isVoiceCapable(getActivity())) { for (String prefKey : NEED_VOICE_CAPABILITY) { Preference pref = findPreference(prefKey); if (pref != null) { getPreferenceScreen().removePreference(pref); } } mRingtonePreference = null; } mRingtoneLookupRunnable = new Runnable() { public void run() { if (mRingtonePreference != null) { updateRingtoneName( RingtoneManager.TYPE_RINGTONE, mRingtonePreference, MSG_UPDATE_RINGTONE_SUMMARY); } if (mNotificationPreference != null) { updateRingtoneName( RingtoneManager.TYPE_NOTIFICATION, mNotificationPreference, MSG_UPDATE_NOTIFICATION_SUMMARY); } } }; // power state change notification sounds mPowerSounds = (CheckBoxPreference) findPreference(KEY_POWER_NOTIFICATIONS); mPowerSounds.setChecked( Settings.Global.getInt(resolver, Settings.Global.POWER_NOTIFICATIONS_ENABLED, 0) != 0); mPowerSoundsVibrate = (CheckBoxPreference) findPreference(KEY_POWER_NOTIFICATIONS_VIBRATE); mPowerSoundsVibrate.setChecked( Settings.Global.getInt(resolver, Settings.Global.POWER_NOTIFICATIONS_VIBRATE, 0) != 0); if (vibrator == null || !vibrator.hasVibrator()) { removePreference(KEY_POWER_NOTIFICATIONS_VIBRATE); } mPowerSoundsRingtone = findPreference(KEY_POWER_NOTIFICATIONS_RINGTONE); String currentPowerRingtonePath = Settings.Global.getString(resolver, Settings.Global.POWER_NOTIFICATIONS_RINGTONE); // set to default notification if we don't yet have one if (currentPowerRingtonePath == null) { currentPowerRingtonePath = Settings.System.DEFAULT_NOTIFICATION_URI.toString(); Settings.Global.putString( getContentResolver(), Settings.Global.POWER_NOTIFICATIONS_RINGTONE, currentPowerRingtonePath); } // is it silent ? if (currentPowerRingtonePath.equals(POWER_NOTIFICATIONS_SILENT_URI)) { mPowerSoundsRingtone.setSummary(getString(R.string.power_notifications_ringtone_silent)); } else { final Ringtone ringtone = RingtoneManager.getRingtone(getActivity(), Uri.parse(currentPowerRingtonePath)); if (ringtone != null) { mPowerSoundsRingtone.setSummary(ringtone.getTitle(getActivity())); } } initDockSettings(); }