1.创建xml文件panic_button_settings
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
android:title="@string/panic_button_settings">
<!-- status -->
<ListPreference
android:key="panic_button_status"
android:title="@string/panic_button_status"
android:summary="@string/panic_button_disable_summary"
android:entries="@array/panic_button_status_choices"
android:entryValues="@array/panic_button_status_values"
android:dialogTitle="@string/panic_button_status" />
<!-- emergency number-->
<PreferenceScreen
android:key="panic_button_emergency_number"
android:title="@string/panic_button_emergency_number"
android:fragment="com.android.settings.PanicButtonEmergencyNumberSettings"/>
<!-- Help -->
<PreferenceScreen
android:key="panic_button_help"
android:title="@string/panic_button_help" />
</PreferenceScreen>
2.新建panic_button_status_choices和panic_button_status_values用于选择对应的条目和值
<string name="panic_button_disable">Disable</string>
<string name="panic_button_enable">Enable</string>
<string-array name="panic_button_status_choices">
<item>@string/panic_button_enable</item>
<item>@string/panic_button_disable</item>
</string-array>
<string-array name="panic_button_status_values">
<item>"1"</item>
<item>"0"</item>
</string-array>
3.创建使用dialog的类
package com.android.settings;
import android.provider.Settings;
import android.util.Log;
import com.android.internal.logging.MetricsLogger;
import com.android.settings.R;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Process;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceScreen;
/**
* Panic button settings.
*/
public class PanicButtonSettings extends SettingsPreferenceFragment implements OnPreferenceClickListener,OnPreferenceChangeListener{
private static final String PANIC_BUTTON_STATUS = "panic_button_status";
private static final String PANIC_BUTTON_EMERGENCY_NUMBER = "panic_button_emergency_number";
private static final String PANIC_BUTTON_HELP = "panic_button_help";
private static final String PANIC_BUTTON_STATUS_KEY = "panic_button_status_key";
private static final int DEFAULT_ENADLE = 0;
private ListPreference mPanicButtonStatus;
private PreferenceScreen mPanicButtonEmergencyMumber;
private PreferenceScreen mPanicButtonHelp;
@Override
protected int getMetricsCategory() {
return MetricsLogger.PRIVACY;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.panic_button_settings);
final PreferenceScreen screen = getPreferenceScreen();
//获取dialog ListPreference
mPanicButtonStatus = (ListPreference) screen.findPreference(PANIC_BUTTON_STATUS);
mPanicButtonEmergencyMumber = (PreferenceScreen) screen.findPreference(PANIC_BUTTON_EMERGENCY_NUMBER);
mPanicButtonHelp = (PreferenceScreen) screen.findPreference(PANIC_BUTTON_HELP);
mPanicButtonStatus.setOnPreferenceChangeListener(this);
mPanicButtonEmergencyMumber.setOnPreferenceClickListener(this);
mPanicButtonHelp.setOnPreferenceClickListener(this);
//获取dialog ListPreference值并初始化
int panicButtonStatus = android.provider.Settings.Global.getInt(
getActivity().getContentResolver(),
PANIC_BUTTON_STATUS_KEY,DEFAULT_ENADLE);
mPanicButtonStatus.setValue(Integer.toString(panicButtonStatus));
if(panicButtonStatus==DEFAULT_ENADLE){
mPanicButtonStatus.setSummary(R.string.panic_button_disable_summary);
} else{
mPanicButtonStatus.setSummary(R.string.panic_button_enable_summary);
}
}
@Override
public boolean onPreferenceClick(Preference preference) {
if(preference.getKey().equals(PANIC_BUTTON_HELP)){
Intent intent=new Intent(getActivity(),PanicButtonHelpActivity.class);
startActivity(intent);
}
return false;
}
//当选择的时候设置ListPreference值并设定summary
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if(preference.getKey().equals(PANIC_BUTTON_STATUS)){
int panicButtonStatusValue = Integer.valueOf((String) newValue).intValue();
mPanicButtonStatus.setValue(Integer.toString(panicButtonStatusValue));
if(panicButtonStatusValue==DEFAULT_ENADLE){
mPanicButtonStatus.setSummary(R.string.panic_button_disable_summary);
} else{
mPanicButtonStatus.setSummary(R.string.panic_button_enable_summary);
}
android.provider.Settings.Global.putInt(
getActivity().getContentResolver(),
PANIC_BUTTON_STATUS_KEY,panicButtonStatusValue);
}
return true;
}
}