Shared_prefs manuell ändern und App zwingen, darauf zu aktualisieren?

7

Ich habe versucht herauszufinden, ob es möglich ist, GO SMS-Popup-Benachrichtigungen über etwas wie Tasker zu deaktivieren / aktivieren. Ich bin auf folgende Zeile gestoßen /data/data/com.jb.gosms/shared_prefs/com.jb.gosms_preferences.xml:

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

Es scheint, als könnte ich das einfach umdrehen false, aber GO SMS sieht das nicht (und es schreibt tatsächlich die Datei shared_prefs neu, wie sie aussieht). Gibt es eine Möglichkeit, GO SMS zu zwingen, diese shared_prefs-Datei erneut zu lesen?

Ich bin verwurzelt und mit Shell-Befehlen sowie Tasker ziemlich vertraut. Ich würde denken, dass jede Lösung eine der oben genannten erfordern würde. (Tasker kann Aktivitäten auslösen oder Absichten senden.)

Dang Khoa
quelle

Antworten:

1

Da dies in Bezug auf die Speicherung von Einstellungen an die Nuancen der Programmierung grenzt PreferenceActivity, ändert eine Aktivität, die implementiert , tatsächlich die gesamte Präferenz-XML und nicht nur einen Schlüsselwert.

Die gesamte Präferenz-XML wird geladen und zwischengespeichert, alle Änderungen werden vorgenommen und auf einen Schlag neu geschrieben.

Sehr wahrscheinlich wird im Fall von Go-SMS ein Standardwert angegeben, trueunabhängig davon, was ausgewählt wurde, und wahrscheinlich auch fest codiert. Wenden Sie sich an Go-SMS-Entwickler, um herauszufinden, warum?

t0mm13b
quelle
0

Versuchen Sie, die Datei zu bearbeiten, nachdem Sie die App unter settingsapplications→ gestoppt haben manage applications. Sie können die Berechtigung der App zum Anzeigen von Benachrichtigungen jedoch nicht bearbeiten

Ruben Roy
quelle
Ich spreche von Popup-Benachrichtigungen - keine Benachrichtigungen in der Statusleiste. Ich werde es versuchen!
Dang Khoa
Das hat nicht funktioniert. Die Zeichenfolge in der XML-Datei wurde ersetzt durch true. :(
Dang Khoa
Innerhalb der App können Sie zu Menüeinstellungen - Benachrichtigungseinstellungen - Deaktivieren Sie Popup aktivieren, um es zu deaktivieren. Wahrscheinlich prüft die App, wann sie bearbeitet wurde und verhindert, dass Sie sie manuell bearbeiten können
Ruben Roy
Ja, ja, das kannst du. Der Punkt war, dass ich dies gerne extern tun würde (etwa über Tasker). Ich denke, das ist nicht möglich.
Dang Khoa
@DangKhoa Haben Sie die App vor dem Bearbeiten der Prefs-Datei zwangsweise gestoppt? Es gibt keine Möglichkeit, die XML-Datei neu zu schreiben, wenn sie nicht ausgeführt wird.
Dan Hulme
-1

Ich hatte genau das gleiche Problem mit einer App, die ich verwende - ich bin verwurzelt und habe die XML-Prefs-Datei und den Wert gefunden, den ich manuell geändert habe, aber jedes Mal, wenn ich die App starte, wird die Datei neu geschrieben. Nachdem ich dies gelesen und mit Code experimentiert habe, denke ich, dass dies daran liegt, dass eine App ihre Einstellungen (getPreferences) erst dann aufruft, wenn ein Einstellungsdialog / -bildschirm geschlossen wird - im Allgemeinen wird die App so geschrieben. Ich bin mir immer noch nicht ganz sicher, warum / wie die App die Präferenz-XML neu schreibt, unabhängig davon, ob die Einstellungen in der App geändert werden oder nicht.

Übrigens möchte auch ich Tasker verwenden, um einen Wert in der Prefs-XML einer App zu ändern, damit die App dynamisch reagiert. Ich möchte die App dekompilieren, um den relevanten Teil des Java-Codes zu finden und ihn dann so zu ändern, dass er häufiger die Einstellungen aufruft.

user29127
quelle