1

我正在尝试更改 Settings.apk 中的默认值。

起初,我将“android:default value”(0=right,1=centered)添加到 status_bar_clock_style.xml,但没有成功。

<ListPreference android:entries="@array/clock_style_entries" android:title="@string/clock_title_enable" android:key="clock_style" android:dependency="status_bar_show_clock" android:entryValues="@array/clock_style_values" android:defaultValue="1" />

然后将 smali 转换为 java 并在那里进行更改也没有用,因为我无法再次编译代码。那会容易得多...

于是我在StatusBarClockStyle.smali的相关方法中试验改了序言。现在默认选择该值,但仍未实现。

.method private createCustomView()Landroid/preference/PreferenceScreen;
.locals 15

.prologue
const/4 v14, -0x2
const/4 v11, 0x0
const/4 v9, 0x1
const/4 v10, 0x1        // used to be 0x0.

.line 89
iput-boolean v10, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mCheckPreferences:Z

.line 90
invoke-virtual {p0}, Lcom/android/settings/slim/StatusBarClockStyle;->getPreferenceScreen()Landroid/preference/PreferenceScreen;

move-result-object v6

.line 91
.local v6, prefSet:Landroid/preference/PreferenceScreen;
if-eqz v6, :cond_0

.line 92
invoke-virtual {v6}, Landroid/preference/PreferenceScreen;->removeAll()V

.line 95
:cond_0
const v8, 0x7f050057

invoke-virtual {p0, v8}, Lcom/android/settings/slim/StatusBarClockStyle;->addPreferencesFromResource(I)V

.line 96
invoke-virtual {p0}, Lcom/android/settings/slim/StatusBarClockStyle;->getPreferenceScreen()Landroid/preference/PreferenceScreen;

move-result-object v6

.line 98
invoke-virtual {p0}, Lcom/android/settings/slim/StatusBarClockStyle;->getPackageManager()Landroid/content/pm/PackageManager;

move-result-object v5

.line 101
.local v5, pm:Landroid/content/pm/PackageManager;
:try_start_0
const-string v8, "com.android.systemui"

invoke-virtual {v5, v8}, Landroid/content/pm/PackageManager;->getResourcesForApplication(Ljava/lang/String;)Landroid/content/res/Resources;
:try_end_0
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0

move-result-object v7

.line 107
.local v7, systemUiResources:Landroid/content/res/Resources;
const-string v8, "clock_style"

invoke-virtual {p0, v8}, Lcom/android/settings/slim/StatusBarClockStyle;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;

move-result-object v8

check-cast v8, Landroid/preference/ListPreference;

iput-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockStyle:Landroid/preference/ListPreference;

.line 108
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockStyle:Landroid/preference/ListPreference;

invoke-virtual {v8, p0}, Landroid/preference/ListPreference;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V

.line 109
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockStyle:Landroid/preference/ListPreference;

invoke-virtual {p0}, Lcom/android/settings/slim/StatusBarClockStyle;->getActivity()Landroid/app/Activity;

move-result-object v12

invoke-virtual {v12}, Landroid/app/Activity;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v12

const-string v13, "statusbar_clock_style"

invoke-static {v12, v13, v10}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

move-result v12

invoke-static {v12}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;

move-result-object v12

invoke-virtual {v8, v12}, Landroid/preference/ListPreference;->setValue(Ljava/lang/String;)V

.line 112
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockStyle:Landroid/preference/ListPreference;

iget-object v12, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockStyle:Landroid/preference/ListPreference;

invoke-virtual {v12}, Landroid/preference/ListPreference;->getEntry()Ljava/lang/CharSequence;

move-result-object v12

invoke-virtual {v8, v12}, Landroid/preference/ListPreference;->setSummary(Ljava/lang/CharSequence;)V

.line 114
const-string v8, "status_bar_am_pm"

invoke-virtual {v6, v8}, Landroid/preference/PreferenceScreen;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;

move-result-object v8

check-cast v8, Landroid/preference/ListPreference;

iput-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockAmPmStyle:Landroid/preference/ListPreference;

.line 115
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockAmPmStyle:Landroid/preference/ListPreference;

invoke-virtual {v8, p0}, Landroid/preference/ListPreference;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V

.line 116
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockAmPmStyle:Landroid/preference/ListPreference;

invoke-virtual {p0}, Lcom/android/settings/slim/StatusBarClockStyle;->getActivity()Landroid/app/Activity;

move-result-object v12

invoke-virtual {v12}, Landroid/app/Activity;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v12

const-string v13, "statusbar_clock_am_pm_style"

invoke-static {v12, v13, v10}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

move-result v12

invoke-static {v12}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;

move-result-object v12

invoke-virtual {v8, v12}, Landroid/preference/ListPreference;->setValue(Ljava/lang/String;)V

.line 119
invoke-virtual {p0}, Lcom/android/settings/slim/StatusBarClockStyle;->getActivity()Landroid/app/Activity;

move-result-object v8

invoke-static {v8}, Landroid/text/format/DateFormat;->is24HourFormat(Landroid/content/Context;)Z

move-result v3

.line 120
.local v3, is24hour:Z
if-eqz v3, :cond_3

.line 121
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockAmPmStyle:Landroid/preference/ListPreference;

const v12, 0x7f0800ca

invoke-virtual {v8, v12}, Landroid/preference/ListPreference;->setSummary(I)V

.line 125
:goto_0
iget-object v12, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockAmPmStyle:Landroid/preference/ListPreference;

if-nez v3, :cond_4

move v8, v9

:goto_1
invoke-virtual {v12, v8}, Landroid/preference/ListPreference;->setEnabled(Z)V

.line 127
const-string v8, "clock_color"

invoke-virtual {p0, v8}, Lcom/android/settings/slim/StatusBarClockStyle;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;

move-result-object v8

check-cast v8, Lnet/margaritov/preference/colorpicker/ColorPickerPreference;

iput-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mColorPicker:Lnet/margaritov/preference/colorpicker/ColorPickerPreference;

.line 128
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mColorPicker:Lnet/margaritov/preference/colorpicker/ColorPickerPreference;

invoke-virtual {v8, p0}, Lnet/margaritov/preference/colorpicker/ColorPickerPreference;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V

.line 129
invoke-virtual {p0}, Lcom/android/settings/slim/StatusBarClockStyle;->getActivity()Landroid/app/Activity;

move-result-object v8

invoke-virtual {v8}, Landroid/app/Activity;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v8

const-string v12, "statusbar_clock_color"

invoke-static {v8, v12, v14}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

move-result v2

.line 131
.local v2, intColor:I
if-ne v2, v14, :cond_5

.line 132
const-string v8, "com.android.systemui:color/status_bar_clock_color"

invoke-virtual {v7, v8, v11, v11}, Landroid/content/res/Resources;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I

move-result v8

invoke-virtual {v7, v8}, Landroid/content/res/Resources;->getColor(I)I

move-result v2

.line 134
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mColorPicker:Lnet/margaritov/preference/colorpicker/ColorPickerPreference;

invoke-virtual {p0}, Lcom/android/settings/slim/StatusBarClockStyle;->getResources()Landroid/content/res/Resources;

move-result-object v11

const v12, 0x7f080067

invoke-virtual {v11, v12}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;

move-result-object v11

invoke-virtual {v8, v11}, Lnet/margaritov/preference/colorpicker/ColorPickerPreference;->setSummary(Ljava/lang/CharSequence;)V

.line 139
:goto_2
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mColorPicker:Lnet/margaritov/preference/colorpicker/ColorPickerPreference;

invoke-virtual {v8, v2}, Lnet/margaritov/preference/colorpicker/ColorPickerPreference;->setNewPreviewColor(I)V

.line 141
const-string v8, "clock_date_display"

invoke-virtual {p0, v8}, Lcom/android/settings/slim/StatusBarClockStyle;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;

move-result-object v8

check-cast v8, Landroid/preference/ListPreference;

iput-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockDateDisplay:Landroid/preference/ListPreference;

.line 142
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockDateDisplay:Landroid/preference/ListPreference;

invoke-virtual {v8, p0}, Landroid/preference/ListPreference;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V

.line 143
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockDateDisplay:Landroid/preference/ListPreference;

invoke-virtual {p0}, Lcom/android/settings/slim/StatusBarClockStyle;->getActivity()Landroid/app/Activity;

move-result-object v11

invoke-virtual {v11}, Landroid/app/Activity;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v11

const-string v12, "statusbar_clock_date_display"

invoke-static {v11, v12, v10}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

move-result v11

invoke-static {v11}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;

move-result-object v11

invoke-virtual {v8, v11}, Landroid/preference/ListPreference;->setValue(Ljava/lang/String;)V

.line 146
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockDateDisplay:Landroid/preference/ListPreference;

iget-object v11, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockDateDisplay:Landroid/preference/ListPreference;

invoke-virtual {v11}, Landroid/preference/ListPreference;->getEntry()Ljava/lang/CharSequence;

move-result-object v11

invoke-virtual {v8, v11}, Landroid/preference/ListPreference;->setSummary(Ljava/lang/CharSequence;)V

.line 148
const-string v8, "clock_date_style"

invoke-virtual {p0, v8}, Lcom/android/settings/slim/StatusBarClockStyle;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;

move-result-object v8

check-cast v8, Landroid/preference/ListPreference;

iput-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockDateStyle:Landroid/preference/ListPreference;

.line 149
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockDateStyle:Landroid/preference/ListPreference;

invoke-virtual {v8, p0}, Landroid/preference/ListPreference;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V

.line 150
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockDateStyle:Landroid/preference/ListPreference;

invoke-virtual {p0}, Lcom/android/settings/slim/StatusBarClockStyle;->getActivity()Landroid/app/Activity;

move-result-object v11

invoke-virtual {v11}, Landroid/app/Activity;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v11

const-string v12, "statusbar_clock_date_style"

const/4 v13, 0x2

invoke-static {v11, v12, v13}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

move-result v11

invoke-static {v11}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;

move-result-object v11

invoke-virtual {v8, v11}, Landroid/preference/ListPreference;->setValue(Ljava/lang/String;)V

.line 153
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockDateStyle:Landroid/preference/ListPreference;

iget-object v11, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockDateStyle:Landroid/preference/ListPreference;

invoke-virtual {v11}, Landroid/preference/ListPreference;->getEntry()Ljava/lang/CharSequence;

move-result-object v11

invoke-virtual {v8, v11}, Landroid/preference/ListPreference;->setSummary(Ljava/lang/CharSequence;)V

.line 155
const-string v8, "clock_date_format"

invoke-virtual {p0, v8}, Lcom/android/settings/slim/StatusBarClockStyle;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;

move-result-object v8

check-cast v8, Landroid/preference/ListPreference;

iput-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockDateFormat:Landroid/preference/ListPreference;

.line 156
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockDateFormat:Landroid/preference/ListPreference;

invoke-virtual {v8, p0}, Landroid/preference/ListPreference;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V

.line 157
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockDateFormat:Landroid/preference/ListPreference;

invoke-virtual {v8}, Landroid/preference/ListPreference;->getValue()Ljava/lang/String;

move-result-object v8

if-nez v8, :cond_1

.line 158
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockDateFormat:Landroid/preference/ListPreference;

const-string v11, "EEE"

invoke-virtual {v8, v11}, Landroid/preference/ListPreference;->setValue(Ljava/lang/String;)V

.line 161
:cond_1
invoke-direct {p0}, Lcom/android/settings/slim/StatusBarClockStyle;->parseClockDateFormats()V

.line 163
const-string v8, "status_bar_show_clock"

invoke-virtual {v6, v8}, Landroid/preference/PreferenceScreen;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;

move-result-object v8

check-cast v8, Landroid/preference/CheckBoxPreference;

iput-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mStatusBarClock:Landroid/preference/CheckBoxPreference;

.line 164
iget-object v11, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mStatusBarClock:Landroid/preference/CheckBoxPreference;

invoke-virtual {p0}, Lcom/android/settings/slim/StatusBarClockStyle;->getActivity()Landroid/app/Activity;

move-result-object v8

invoke-virtual {v8}, Landroid/app/Activity;->getApplicationContext()Landroid/content/Context;

move-result-object v8

invoke-virtual {v8}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v8

const-string v12, "status_bar_clock"

invoke-static {v8, v12, v9}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

move-result v8

if-ne v8, v9, :cond_6

move v8, v9

:goto_3
invoke-virtual {v11, v8}, Landroid/preference/CheckBoxPreference;->setChecked(Z)V

.line 167
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mStatusBarClock:Landroid/preference/CheckBoxPreference;

invoke-virtual {v8, p0}, Landroid/preference/CheckBoxPreference;->setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V

.line 169
invoke-virtual {p0}, Lcom/android/settings/slim/StatusBarClockStyle;->getActivity()Landroid/app/Activity;

move-result-object v8

invoke-virtual {v8}, Landroid/app/Activity;->getContentResolver()Landroid/content/ContentResolver;

move-result-object v8

const-string v11, "statusbar_clock_date_display"

invoke-static {v8, v11, v10}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

move-result v8

if-eqz v8, :cond_7

move v4, v9

.line 171
.local v4, mClockDateToggle:Z
:goto_4
if-nez v4, :cond_2

.line 172
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockDateStyle:Landroid/preference/ListPreference;

invoke-virtual {v8, v10}, Landroid/preference/ListPreference;->setEnabled(Z)V

.line 173
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockDateFormat:Landroid/preference/ListPreference;

invoke-virtual {v8, v10}, Landroid/preference/ListPreference;->setEnabled(Z)V

.line 176
:cond_2
invoke-virtual {p0, v9}, Lcom/android/settings/slim/StatusBarClockStyle;->setHasOptionsMenu(Z)V

.line 177
iput-boolean v9, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mCheckPreferences:Z

.line 178
.end local v2           #intColor:I
.end local v3           #is24hour:Z
.end local v4           #mClockDateToggle:Z
.end local v6           #prefSet:Landroid/preference/PreferenceScreen;
.end local v7           #systemUiResources:Landroid/content/res/Resources;
:goto_5
return-object v6

.line 102
.restart local v6       #prefSet:Landroid/preference/PreferenceScreen;
:catch_0
move-exception v0

.line 103
.local v0, e:Ljava/lang/Exception;
const-string v8, "StatusBarClockStyle"

const-string v9, "can\'t access systemui resources"

invoke-static {v8, v9, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I

move-object v6, v11

.line 104
goto :goto_5

.line 123
.end local v0           #e:Ljava/lang/Exception;
.restart local v3       #is24hour:Z
.restart local v7       #systemUiResources:Landroid/content/res/Resources;
:cond_3
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockAmPmStyle:Landroid/preference/ListPreference;

iget-object v12, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mClockAmPmStyle:Landroid/preference/ListPreference;

invoke-virtual {v12}, Landroid/preference/ListPreference;->getEntry()Ljava/lang/CharSequence;

move-result-object v12

invoke-virtual {v8, v12}, Landroid/preference/ListPreference;->setSummary(Ljava/lang/CharSequence;)V

goto/16 :goto_0

:cond_4
move v8, v10

.line 125
goto/16 :goto_1

.line 136
.restart local v2       #intColor:I
:cond_5
const-string v8, "#%08x"

new-array v11, v9, [Ljava/lang/Object;

and-int/lit8 v12, v2, -0x1

invoke-static {v12}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

move-result-object v12

aput-object v12, v11, v10

invoke-static {v8, v11}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

move-result-object v1

.line 137
.local v1, hexColor:Ljava/lang/String;
iget-object v8, p0, Lcom/android/settings/slim/StatusBarClockStyle;->mColorPicker:Lnet/margaritov/preference/colorpicker/ColorPickerPreference;

invoke-virtual {v8, v1}, Lnet/margaritov/preference/colorpicker/ColorPickerPreference;->setSummary(Ljava/lang/CharSequence;)V

goto/16 :goto_2

.end local v1           #hexColor:Ljava/lang/String;
:cond_6
move v8, v10

.line 164
goto :goto_3

:cond_7
move v4, v10

.line 169
goto :goto_4
.end method

有人能指出我正确的方向吗?或者告诉我如何以另一种方式实现这一目标?谢谢 =)

(编辑:我知道我可以在 status_bar.xml 中执行此操作,这通常是关于更改默认值。)

4

0 回答 0