Поскольку я создаю пользовательский ПЗУ, я хочу удалить некоторые записи из settings.apk. Потому что нет способа скрыть предпочтение с XML. Мне нужно изменить исходный код из apk и удалить предпочтение от PreferenceScreen. Так что я декомпилировал classes.dex
с dex2jar копируется исходный код и добавьте следующую строку:Приложение для перекомпиляции системы
getPreferenceScreen().removePreference(findPreference("toggle_wifi"));
Теперь моя проблема заключается в том, что я не знаю, как перекомпилировать приложение. Я не могу скомпилировать его с Eclipse, потому что он использует некоторые системные пространства имен (в Eclipse это ошибка, поэтому я не могу скомпилировать). Как перекомпилировать приложение? У меня есть только файлы * .java.
EDIT: smali код, который я добавил к smali файлов:
invoke-virtual {p0}, Lcom/android/settings/WirelessSettings;->getPreferenceScreen()Landroid/preference/PreferenceScreen;
move-result-object v12
const-string v13, "toggle_wifi"
invoke-virtual {p0, v13}, Lcom/android/settings/WirelessSettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v13
invoke-virtual {v12, v13}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z
invoke-virtual {p0}, Lcom/android/settings/WirelessSettings;->getPreferenceScreen()Landroid/preference/PreferenceScreen;
move-result-object v12
const-string v13, "wifi_settings"
invoke-virtual {p0, v13}, Lcom/android/settings/WirelessSettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v13
invoke-virtual {v12, v13}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z
invoke-virtual {p0}, Lcom/android/settings/WirelessSettings;->getPreferenceScreen()Landroid/preference/PreferenceScreen;
move-result-object v12
const-string v13, "toggle_bluetooth"
invoke-virtual {p0, v13}, Lcom/android/settings/WirelessSettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v13
invoke-virtual {v12, v13}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z
invoke-virtual {p0}, Lcom/android/settings/WirelessSettings;->getPreferenceScreen()Landroid/preference/PreferenceScreen;
move-result-object v12
const-string v13, "bt_settings"
invoke-virtual {p0, v13}, Lcom/android/settings/WirelessSettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v13
invoke-virtual {v12, v13}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z
Спасибо за ссылку I заработал. Я добавил файл smali из Settings.apk, но у меня нет понимания в smali. Я отправил свой новый smali-код в свой вопрос. Можете ли вы взглянуть на него, если я могу сделать его более эффективным? – Cilenco