Preference使用过程

在主界面添加:xml布局

  <!-- Network model -->
    <header
        android:id="@+id/network_settings"
        android:title="@string/network_title"
        android:fragment="com.android.settings.NetworkSettings"
        android:icon="@drawable/ic_settings_more" />

java代码:

package com.android.settings;

import com.android.settings.bluetooth.DockEventReceiver;

import android.app.AlertDialog;
import android.app.Dialog;
import android.bluetooth.BluetoothDevice;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.database.Cursor;
import android.database.sqlite.SQLiteException;
import android.media.AudioManager;
import android.media.RingtoneManager;
import android.media.audiofx.AudioEffect;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.PowerManager;
import android.os.SystemProperties;
import android.os.Vibrator;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen;
import android.preference.SwitchPreference;
import android.preference.Preference.OnPreferenceClickListener; 
import android.preference.Preference.OnPreferenceChangeListener;
import android.provider.MediaStore;
import android.provider.Settings;
import android.telephony.ServiceState;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.preference.PreferenceFragment;
import java.util.List;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.FileInputStream;

public class NetworkSettings extends PreferenceFragment  implements Preference.OnPreferenceClickListener,OnPreferenceChangeListener{
	private static final String TAG = "NetworkSettings";
	private static final String SMODE_CLASS_CHANGE = "s_mode_class_change";
	private static final String KEY_MODEL_CHANGE = "key_model_change";
	private static final String CIZILLTE_CLASS_CHANGE = "civilLTE_class_change";
	
	private static String propertySw1 = null;
	private static String propertySw2 = null;
	private static String propertySrx = null;
	private static String propertyPmp = null;
	private CheckBoxPreference  mSmodePreference = null;
	private ListPreference mModelPreference = null;
	private CheckBoxPreference mCivilltePreference = null;
	@Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        addPreferencesFromResource(R.xml.network_settings);
        propertySw1 = SystemProperties.get("ro.sys.lte_radio_ant_sw1", "0");
        propertySw2 = SystemProperties.get("ro.sys.lte_radio_ant_sw2", "0");
        propertySrx = SystemProperties.get("ro.sys.srx_switch", "0");
        propertyPmp = SystemProperties.get("ro.sys.pmp_sw_ctrl", "0");
        
        mSmodePreference = (CheckBoxPreference)findPreference(SMODE_CLASS_CHANGE);
        mModelPreference = (ListPreference)findPreference(KEY_MODEL_CHANGE);
        mCivilltePreference = (CheckBoxPreference)findPreference(CIZILLTE_CLASS_CHANGE);
        
        //mSmodePreference.setOnPreferenceClickListener(this);
        //mSmodePreference.setOnPreferenceChangeListener(this);
        mModelPreference.setOnPreferenceChangeListener(this); 
        //mCivilltePreference.setOnPreferenceClickListener(this);
    } 
	
	/*@Override  
    public boolean onPreferenceClick(Preference preference) { 
		if(preference == mCivilltePreference){
			setFile(propertyPmp, "0");
			setFile(propertySrx, "1");
		}
		return true;  
	}*/
	
	@Override
	public boolean onPreferenceChange(Preference preference, Object newValue) {
		Log.d(TAG, "onPreferenceChange");
		if (preference == mModelPreference){
			if(newValue.equals("001")){
				mCivilltePreference.setEnabled(false);
				mCivilltePreference.setChecked(false);
				setFile(propertyPmp, "1");
				setFile(propertySrx, "0");
				setFile(propertySw1, "0");
				setFile(propertySw2, "0");
			}else if(newValue.equals("002")){
				mCivilltePreference.setEnabled(true);
				setFile(propertySw1, "0");
				setFile(propertySw2, "1");
			}else if(newValue.equals("003")){
				mCivilltePreference.setEnabled(true);
				setFile(propertySw1, "1");
				setFile(propertySw2, "0");
			}else if(newValue.equals("004")){
				mCivilltePreference.setEnabled(true);
				setFile(propertySw1, "1");
				setFile(propertySw2, "1");
			}
		}
		return true;
	}
	
	@Override  
    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { 
		if (preference == mModelPreference) {  
            
        }else if (preference == mSmodePreference) {
			boolean isChecked = mSmodePreference.isChecked();
			if (isChecked) {
				dialogExit();
			} else {

			}
		
		}else if(preference == mCivilltePreference){
			setFile(propertyPmp, "0");
			setFile(propertySrx, "1");
		}
		return super.onPreferenceTreeClick(preferenceScreen, preference);
	}

    private void dialogExit(){
    	AlertDialog.Builder builder=new AlertDialog.Builder(getActivity());
    	builder.setTitle(R.string.biaoti);
        builder.setMessage(R.string.comfirm_restart);
        builder.setPositiveButton(R.string.sure, new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				dialog.dismiss();
			}
		});
        
        builder.setNegativeButton(R.string.quxiao, new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				
				dialog.dismiss(); 
			}
		});
        
        builder.create().show(); 
    }
    
    void setFile(String path, String val) {
        FileOutputStream out = null;
        try {
            out = new FileOutputStream(path);
            byte[] buf = val.getBytes();
            out.write(buf, 0, buf.length);
        } catch (FileNotFoundException e) {
            Log.e(TAG, "FileNotFoundException: setFile " + e);
        } catch (IOException e) {
            Log.e(TAG, "IOException: setFile " + e);
        } finally {
            try {
                if (out != null)
                    out.close();
            } catch (IOException e) {
            }
        }
    }
    
    String getFile(String path) {
        FileInputStream is = null;
        String val = null;
        try {
            is = new FileInputStream(path);
            byte[] buffer = new byte[64];
            int count = is.read(buffer);
            if (count > 0) {
                val = new String(buffer, 0, count);
            }
        } catch (IOException e) {
            Log.d(TAG, "IOException: getFile " + e);
        } finally {
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                }
            }
        }
        if (val != null) {
            val = val.trim();
        }
        return val;
    }

}


java代码中使用的布局:

<?xml version="1.0" encoding="utf-8"?>


<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
        android:title="@string/network_title"
        android:key="sound_settings"
        xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
        
 

    <PreferenceCategory
            android:key="first_class"
            android:title="@string/first_class_model"/>

  		<CheckBoxPreference 
       		android:key="s_mode_class_change"  
        	android:title="@string/s_mode"   
        	android:summaryOn="@string/print_feature_state_on"
        	android:summaryOff="@string/print_feature_state_off"
        	/>
  		
 	<PreferenceCategory
            android:key="second_class"
            android:title="@string/second_class_model"/>
		
    	 <ListPreference  
       	 	android:defaultValue="@string/model_default_value"  
        	android:dialogTitle="@string/test_model_change"  
        	android:entries="@array/ModelChange"  
        	android:entryValues="@array/ModelChange_value"  
        	android:key="key_model_change"  
        	android:title="@string/test_model_change" >  
   		 </ListPreference> 

	<PreferenceCategory
            android:key="third_class"
            android:title="@string/third_class_model"/>

		<CheckBoxPreference
       		android:key="civilLTE_class_change"  
        	android:title="@string/civilLTE"    
        	android:summaryOn="@string/print_feature_state_on"
        	android:summaryOff="@string/print_feature_state_off"
        	/>

</PreferenceScreen>



所引用到的array,string布局

<string-array name="ModelChange">  
    	<item>@string/militaryLTE</item>  
    	<item>@string/SZDJ</item>  
    	<item>@string/ZZW</item>  
    	<item>@string/ZHW</item>  
	</string-array>  
	<string-array name="ModelChange_value">  
    	<item>001</item>  
    	<item>002</item>  
    	<item>003</item>  
    	<item>004</item>  
</string-array> 

<string name="first_class_model">第一类模式</string>
	<string name="second_class_model">第二类模式</string>
	<string name="third_class_model">第三类模式</string>
	
	<string name="militaryLTE">军用LTE</string>
	<string name="SZDJ">SZDJ</string>
	<string name="ZZW">ZZW</string>
	<string name="ZHW">ZHW</string>
	<string name="civilLTE">民用LTE</string>
	<string name="model_default_value">001</string>
	<string name="test_model_change">模式切换</string>
	
	<string name="comfirm_restart">是否要重新启动?</string>
	<string name="biaoti">提示</string>
	<string name="sure">确定</string>
	<string name="quxiao">取消</string>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值