android系统设置在哪里,android-如何在系统settings里添加设置选项
版本:2.3.1
目的:在通話設置菜單下,添加一dect設置菜單,里面再添加一checkBOxPreference
來使能硬件模塊。
-------------------------
目前做的項目,需要在系統settings里面添加一選項來使能硬件模塊,里面涉及到的preference知識,請網上了解,這里記錄下方法。
1,settings 應用一般在 目錄:\packages\apps\Settings,我們先找到通話設置的布局位置,看看它在那個包路徑下,進入\packages\apps\Settings\res\xml,打開settings.xml文件:
Java代碼
android:key="call_settings"
settings:icon="@drawable/ic_settings_call"
android:title="@string/call_settings_title">
android:action="android.intent.action.MAIN"
android:targetPackage="com.android.phone"
android:targetClass="com.android.phone.CallFeaturesSetting"?/>
android:targetPackage="com.android.phone"
android:targetClass="com.android.phone.CallFeaturesSetting"
targetPackage:表示包名,根據此我們可以找到通話設置的路徑。
targetClass:表示此布局文件被那個類所引用,根據此類,我們可以知道在那個文件里面管理我們的通話設置功能。
2.根據包名,我們可以看到在\packages\apps\Phone 目錄下,進入\res\xml目錄下
找到通話布局文件:call_feature_setting.xml,根據類名,很容易找到布局文件。
里面內容如下:
Java代碼
android:title="@string/other_settings"
android:persistent="false"?/>
android:key="dect_settings"
android:title="@string/dect_module_title"
android:summary="@string/dect_module_title"?>
android:action="android.intent.action.MAIN"
android:targetPackage="com.android.phone"
android:targetClass="com.android.phone.DectSettings"?/>
android:key="button_auto_retry_key"
android:title="@string/auto_retry_mode_title"
android:persistent="false"
android:summary="@string/auto_retry_mode_summary"/>
Dect setting 就是新添加進入的設置菜單,我們的原則盡量不大量修改源碼,所以添加一個PreferenceScreen,新增一個類文件來管理DECt菜單選項。
android:targetPackage="com.android.phone"
android:targetClass="com.android.phone.DectSettings"
我們指明了包名,類名后,因這是個activity,所以我們需要到Phone目錄下修改
AndroidManifest.xml文件,指明啟動的activity的類名.
Java代碼
android:label="@string/cdma_options">
android:label="@string/dect_module_title">
3.修改好后,我們必須在此activity里添加preference布局文件。
在此目錄Phone\res\xml下,新增dect_settings.xml
Java代碼
android:title="@string/dect_module_title">
android:key="button_dect_module_key"
android:title="@string/dect_module_title"
android:defaultValue="true"
android:summaryOn="@string/dect_module_start"
android:summaryOff="@string/dect_module_stop"
/>
好了,總體布局已經完成
4.在\packages\apps\Phone\src\com\android\phone目錄下
新增DectSettings.java文件
加載布局文件:
//dect xml
addPreferencesFromResource(R.xml.dect_settings);
里面涉及到的MidPhoneServce服務,是自己添加的,主要通過此服務的AIDL接口跟硬件打交道。想了解系統服務,請網上查找資料。
源碼如下:
Java代碼
package?com.android.phone;
import?android.content.DialogInterface;
import?android.os.AsyncResult;
import?android.os.Bundle;
import?android.os.Handler;
import?android.os.Message;
import?android.preference.CheckBoxPreference;
import?android.preference.Preference;
import?android.preference.PreferenceActivity;
import?android.preference.PreferenceScreen;
import?android.content.SharedPreferences;
import?android.content.SharedPreferences.Editor;
import?android.content.pm.ActivityInfo;
import?android.content.pm.PackageManager;
import?android.content.pm.ResolveInfo;
import?android.os.Bundle;
import?android.os.Handler;
import?android.util.Log;
import?android.content.Context;
import?com.android.phone.R;
import?android.os.IMidPhoneService;
import?android.os.RemoteException;
import?android.os.ServiceManager;
import?android.provider.Settings;
public?class?DectSettings?extends?PreferenceActivity?{
private?static?final?String?TAG?=?"DectSettings";
private?static?final?String?BUTTON_DECT_KEY??=?"button_dect_module_key";
private?CheckBoxPreference?mButtonDect;
public?IMidPhoneService?midphoneservice?=?null;
@Override
protected?void?onCreate(Bundle?icicle)?{
super.onCreate(icicle);
//dect?xml
addPreferencesFromResource(R.xml.dect_settings);
mButtonDect?=?(CheckBoxPreference)findPreference(BUTTON_DECT_KEY);
mButtonDect.setPersistent(false);
if(mButtonDect?!=?null)?{
int?dect_state?=?Settings.System.getInt(
getContentResolver(),Settings.System.DECT_SAVED_STATE,?1);
mButtonDect.setChecked(?dect_state!=?0);
Settings.System.putInt(getContentResolver(),
Settings.System.DECT_SAVED_STATE,dect_state);
Log.e(TAG,"settings:------------->"?+?dect_state);
}
}
@Override
public?boolean?onPreferenceTreeClick(PreferenceScreen?preferenceScreen,?Preference?preference)?{
if?(preference?==?mButtonDect?)?{
int?dect?=?mButtonDect.isChecked()???1?:?0;
boolean?state;
if(dect?==?1)
state?=?true;
else
state?=?false;
try{
midphoneservice?=?IMidPhoneService.Stub.asInterface(ServiceManager.getService("midphone"));
Settings.System.putInt(getContentResolver(),
Settings.System.DECT_SAVED_STATE,dect);
midphoneservice.setDectEnabled(state);
Log.e(TAG,"settings:------------->"?+?dect);
}?catch?(RemoteException?e)?{
e.printStackTrace();
}
return?true;
}
return?false;
}
@Override
protected?void?onResume()?{
super.onResume();
if?(mButtonDect?!=?null)?{
mButtonDect.setChecked(Settings.System.getInt(
getContentResolver(),
Settings.System.DECT_SAVED_STATE,?1)?!=?0);
}
}
}
5.編譯,燒錄。
相對參考:
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的android系统设置在哪里,android-如何在系统settings里添加设置选项的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android listview快速定位
- 下一篇: Mschart绘制图表之X轴为时间的设置