¿Cambiar manualmente shared_prefs y obligar a la aplicación a actualizarse?

He estado tratando de averiguar si es posible deshabilitar/habilitar las notificaciones emergentes de GO SMS a través de algo como Tasker. Encontré la siguiente línea en /data/data/com.jb.gosms/shared_prefs/com.jb.gosms_preferences.xml:

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

Parecería que podría cambiar eso a false, pero GO SMS no lo ve (y en realidad reescribe el archivo shared_prefs que parece). ¿Hay alguna forma de obligar a GO SMS a volver a leer este archivo shared_prefs?

Estoy rooteado y me siento bastante cómodo con los comandos de shell, así como con Tasker; Yo pensaría que cualquier solución requeriría uno de los anteriores. (Tasker puede activar actividades o transmitir intenciones).

Respuestas (3)

Dado que esto bordea los matices de la programación en términos de cómo se almacenan las preferencias, una actividad que implementa PreferenceActivity, en realidad modifica todo el xml de preferencia, no solo un valor clave.

Todo el xml de preferencia se carga y se almacena en caché, cualquier cambio realizado, lo vuelve a escribir de una sola vez.

Es muy probable que, en el caso de Go-SMS, haya un valor predeterminado especificado trueindependientemente de lo que se seleccionó, y también es probable que esté codificado. Plantee el problema a los desarrolladores de Go-SMS para averiguar por qué.

Intente editar el archivo después de 'forzar la detención' de la aplicación en settingsapplicationsmanage applications. Sin embargo, no puede editar el permiso de la aplicación para mostrar notificaciones

Estoy hablando de notificaciones emergentes, no de notificaciones en la barra de estado. ¡Le daré una oportunidad a esto!
Esto no funcionó. La cadena en el archivo xml se reemplazó a true. :(
dentro de la aplicación, puede ir a la configuración del menú - configuración de notificaciones - desmarque habilitar ventana emergente para deshabilitarla. Probablemente la aplicación comprueba cuándo se editó y evita que la edites manualmente.
Sí, sí puedes. El punto era que me gustaría poder hacer esto externamente (a través de Tasker, digamos). Supongo que esto no es posible..
@DangKhoa ¿Forzó la detención de la aplicación antes de editar el archivo de preferencias? No hay forma de que pueda reescribir el archivo XML si no se está ejecutando.

Tuve exactamente el mismo problema con una aplicación que uso: estoy rooteado y encontré el archivo de preferencias XML y el valor que cambié manualmente, pero cada vez que inicio la aplicación, vuelve a escribir el archivo. Después de leer un poco sobre esto y experimentar con el código, creo que esto se debe a que una aplicación solo llamará a sus preferencias (getPreferences) una vez que se cierre un cuadro de diálogo/pantalla de configuración; en general, así es como se escribe la aplicación. Todavía no estoy muy seguro de por qué/cómo la aplicación reescribe el xml de preferencia independientemente de cambiar la configuración en la aplicación o no.

Por cierto, yo también quiero usar Tasker para cambiar un valor en el xml de preferencias de una aplicación para que la aplicación responda dinámicamente. Estoy buscando descompilar la aplicación para encontrar la pieza relevante de código Java y luego modificarla para llamar a las preferencias con más frecuencia.