Менять вручную shared_prefs и заставлять приложение обновляться до него?

Я пытался выяснить, можно ли отключить/включить всплывающие уведомления GO SMS через что-то вроде Tasker. Я наткнулся на следующую строку в /data/data/com.jb.gosms/shared_prefs/com.jb.gosms_preferences.xml:

<boolean name="pref_key_popup_msg" value="true" />

Казалось бы, я мог бы просто изменить это на false, но GO SMS этого не видит (и на самом деле он перезаписывает файл shared_prefs, как это выглядит). Есть ли способ заставить GO SMS перечитать этот файл shared_prefs?

У меня есть root-права, и мне довольно удобно работать с командами оболочки, а также с Tasker; Я думаю, что любое решение потребует одного из вышеперечисленных. (Tasker может запускать действия или транслировать намерения.)

Ответы (3)

Поскольку это граничит с нюансами программирования с точки зрения того, как хранятся настройки, действие, которое реализует PreferenceActivity, фактически изменяет весь XML-файл предпочтений, а не только одно значение ключа.

Весь XML-файл предпочтений загружается и кэшируется, любые внесенные изменения переписываются одним махом.

Вполне вероятно, что в случае с Go-SMS указано значение по умолчанию, trueнезависимо от того, что было выбрано, а также, вероятно, оно жестко запрограммировано — обратитесь к разработчикам Go-SMS, чтобы выяснить, почему?

Попробуйте отредактировать файл после «принудительной остановки» приложения в settingsapplicationsmanage applications. Однако вы не можете изменить разрешение приложения на отображение уведомлений.

Я говорю о всплывающих уведомлениях, а не об уведомлениях в строке состояния. Я попробую!
Это не сработало. Строка в файле xml была заменена на true. :(
внутри приложения вы можете перейти в меню-настройки-настройки уведомлений-снять флажок включить всплывающее окно, чтобы отключить его. Возможно, приложение проверяет, когда оно было отредактировано, и не позволяет вам редактировать его вручную.
Да, да, вы можете. Дело в том, что я хотел бы иметь возможность делать это извне (скажем, через Tasker). Угадайте, что это невозможно..
@DangKhoa Вы принудительно останавливали приложение перед редактированием файла настроек? Он никак не может переписать файл XML, если он не запущен.

У меня была точно такая же проблема с приложением, которое я использую - я укоренился и нашел файл настроек XML и значение, которое я изменил вручную, но каждый раз, когда я загружаю приложение, оно перезаписывает файл. Прочитав об этом и поэкспериментировав с кодом, я думаю, что это связано с тем, что приложение будет вызывать свои настройки (getPreferences) только после закрытия диалогового окна/экрана настроек - обычно так написано приложение. Я до сих пор не совсем понимаю, почему/как приложение переписывает XML-файл предпочтений независимо от того, изменялись ли настройки в приложении или нет.

Кстати, я тоже хочу использовать Tasker для изменения значения в prefs xml приложения, чтобы приложение динамически реагировало. Я изучаю декомпиляцию приложения, находящего соответствующий фрагмент кода Java, а затем изменяю его, чтобы чаще вызывать префы.