以下为记录在Settings 无障碍中增加开关,基于Android 4.4 系统
首先是在frameworks 中增加如下三个操作
第一步:
在frameworks/base/packages/SettingsProvider/res/values/defaults.xml(该XML文件可以修改Settings数据库的默认值(准确点说是第一次开机后的值))中增加一行<bool name="def_自己命名">true</bool>
或者<integer name="def_自己命名">1</integer> 根据自己需求增加对应的数据类型。true或者1 表示开关默认打开。我使用的是bool +true 即开关默认打开。如: <bool name="def_Auxiliary_touch">true</bool>
第二步:
在frameworks/base/core/java/android/provider/Settings.java 中增加开关命名。如:public static final String ACCESSIBILITY_AUXILIARY_TOUCH = "Auxiliary_touch"; 下面还有个地方要注意,要将增加的开关命名-ACCESSIBILITY_AUXILIARY_TOUCH-添加进字符串数组 SETTINGS_TO_BACKUP 中。
第三步:
在frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java中增加
类似loadBooleanSetting(stmt, Settings.Secure.Settings.java中定义的开关名字, R.bool.default.xml定义的命名);
如:loadBooleanSetting(stmt, Settings.Secure.ACCESSIBILITY_AUXILIARY_TOUCH, R.bool.def_Auxiliary_touch);
然后在Settings中增加以下操作:
第一步在 packages/apps/Settings/res/xml/accessibility_settings.xml 中增加
<CheckBoxPreference
android:key="toggle_Auxiliary_touch_preference"
android:title="显示的开关名称"
android:persistent="false"/>
第二步在 apps/Settings/src/com/android/settings/accessibility/AccessibilitySettings.java中添加
private static final String TOGGLE_AUXILIARY_TOUCH_PREFERENCE ="toggle_Auxiliary_touch_preference";
private CheckBoxPreference mToggleAuxiliaryTouchPreference;
在onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference)方法中增加
else if (mToggleAuxiliaryTouchPreference == preference) {
handleToggleAuxiliaryTouchPreferenceClick();
return true;
}
然后添加方法private void handleToggleAuxiliaryTouchPreferenceClick() {
Settings.Secure.putInt(getContentResolver(),
Settings.Secure.ACCESSIBILITY_AUXILIARY_TOUCH,
mToggleAuxiliaryTouchPreference.isChecked() ? 1 : 0);
}
在initializeAllPreferences方法中添加 mToggleAuxiliaryTouchPreference=
(CheckBoxPreference) findPreference(TOGGLE_AUXILIARY_TOUCH_PREFERENCE );
在updateSystemPreferences()方法中增加
final boolean AuxiliaryTouchEnabled = ettings.Secure.getInt(getContentResolver(), Settings.Secure.ACCESSIBILITY_AUXILIARY_TOUCH, 0) != 0; mToggleAuxiliaryTouchPreference.setChecked(AuxiliaryTouchEnabled);
以上就是在Setttings的无障碍中增加一个开关。
注意:这里不包括打开开关之后的方法实现。方法实现可以在
handleToggleAuxiliaryTouchPreferenceClick中添加,或者自己再找其他地方写。