最近我申请了一个task,就是在设置中添加一个SwitchPreference 主要控制锁屏界面的壁纸 的apk,这个apk可以下载图片,和选用壁纸,今天根据我的分析,主要的思路如下:
在设置中添加一个SwitchPreference checked的值用SettingProvider保存,手机第一次启动Settings中读取frameworks/base/packages/SettingsProvider/res/values/defaults.xml中的数据,所以我需要设置默认值,以后会在Setting.db
中读写。
<boolean name="def_status" translatable="false">false</string>
frameworks/base/core/java/android/provider/Settings.java中,添加第一次启动加载的流程
public final class Settings {
public static final String STSTUS = "status"; ....
- public final class Settings {
SCREEN_BRIGHTNESS,
SCREEN_BRIGHTNESS_MODE,
SCREEN_AUTO_BRIGHTNESS_ADJ,
- STSTUS,
然后读取默认值在
/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
public class DatabaseHelper extends SQLiteOpenHelper {
loadBooleanSetting(stmt, Settings.System.STSTUS, R.boolean.def_status);
以后开关checked值可以通过
Settings.System.putBoolean(getActivity().getContentResolver(), Settings.System.STSTUS, checked);
保存,也可以根据ContentObserver来读取值
Settings.System.getString(mContext.getContentResolver(), Settings.System.STATUS);
参考地址:http://blog.csdn.net/chenqian_lj/article/details/21030503
后面就是systemui的界面了,settings中开关打开,那么lockscreen会显示需要的壁纸显示界面和文字,可以点击进入apk。
本人技术技术有限,希望广大开发人员指点。