|
||
|
|
|
|||||||
| Tasker Para hablar de todo lo relacionado con la aplicación tasker |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Modificar preferencias de Whatsapp u otras aplicaciones
Pues eso, que por si no habíamos hackeado suficiente el Whatsapp desde este subforo he encontrado una forma de poder trastearlo un poco más desde Tasker
Mi motivación es que me gusta la ventana emergente que muestra whatsapp cuando llega un mensaje porque me permite verlo rápidamente y responder sin tener que abrirlo siquiera. Pero hay ciertas circunstancias en las que no la quiero, por ejemplo cuando estoy en el trabajo o tengo abiertas ciertas aplicaciones ya que al abrirse el popup me las tapa. El propio whatsapp permite deshabilitarla cuando tienes la pantalla encendida, apagada o siempre, pero no permite tanta personalización, así que algo tenía que poder hacerse con Tasker... Nota: por supuesto se necesita root para tener acceso a los datos y poder modificarlos, además es recomendable guardar una copia del fichero como estaba antes de tocar por si acaso. Las preferencias de cada aplicación (al menos muchas de ellas) se guardan en un xml en /data/data/paquete.de.la.app/shared_prefs concretamente para el whatsapp están en /data/data/com.whatsapp/shared_prefs/com.whatsapp_preferences.xml Si abrimos este fichero vemos un xml con lineas tipo: Código:
<string name="XXXX">YYYY</string> En mi caso me interesa "notify_popup_mode" y veo que cuando desde whatsapp pongo "mostrar siempre elemento emergente" esta preferencia vale 2 y cuando pongo "Ningún mensaje" vale 0, ahora solo falta poder cambiarlo sin entrar en whatsapp! Esta es la tarea que uso: Código:
ChangeWhatsappPopup (2)
A1: Run Shell [ Command:cat /data/data/com.whatsapp/shared_prefs/com.whatsapp_preferences.xml | sed -e 's/<string name="notify_popup_mode">[^<]*<\/string>/<string name="notify_popup_mode">%par1<\/string>/g' > /data/data/com.whatsapp/shared_prefs/com.whatsapp_preferences.xml Timeout (Seconds):0 Use Root:On Store Output In: Store Errors In: Store Result In: ]
A2: Taskkill [ Configuration:Method=Extreme; Package=com.whatsapp Package:com.laptopfreek0.taskkill Name:Taskkill Timeout (Seconds):0 ]
A3: Run Shell [ Command:am startservice -n com.whatsapp/com.whatsapp.messaging.MessageService Timeout (Seconds):0 Use Root:On Store Output In: Store Errors In: Store Result In: ]
Código:
cat /data/data/com.whatsapp/shared_prefs/com.whatsapp_preferences.xml | sed -e 's/<string name="notify_popup_mode">[^<]*<\/string>/<string name="notify_popup_mode">%par1<\/string>/g' > /data/data/com.whatsapp/shared_prefs/com.whatsapp_preferences.xml Finalmente, mediante el operador ">" volcamos el resultado (que es el contenido del fichero reemplazando esa linea) en /data/data/com.whatsapp/shared_prefs/com.whatsapp_preferences.xml (el mismo fichero origen) Despues, para que whatsapp aplique el cambio hay que cerrarlo y volverlo a abrir, ya que las preferencias se guardan en una cache para no estar leyedolas todo el rato, uso el plugin Taskkill para matarlo, pero podeis usar el metodo que prefiráis. Por ultimo, aunque el servicio de whatsapp se debería lanzar solo al cabo de un tiempo, he notado que me tarda mucho y ese rato no recino nada, así que con "am startservice -n com.whatsapp/com.whatsapp.messaging.MessageService" lanzo el servicio en segundo plano que recibe y envía los mensajes. Como pongo en el titulo esto es extrapolable a otras preferencias y/o otras aplicaciones, hay que buscar que preferencia es, cambiarlo por el valor que queramos y ver si es necesario matar/relanzar la aplicación para que aplique los cambios. Última edición por maid450 Día 12/02/14 a las 15:53:43. |
| Los siguientes 5 usuarios han agradecido a maid450 su comentario: | ||
|
|
|
#2
|
||||
|
||||
|
Guau!... Im-pre-sio-nan-te
El día que hagas un plugin vamos a flipar. Ahora mismo voy a trastear ese xml a ver que se cuece ahí. Por cierto lo de am es un Intent verdad? Podrías ponerlo en el post de intents? Quizá haya quien le encuentre utilidad, yo mismo para GSM quizá me valga. Dos cosas: 1 Porque no utilizas la acción buscar reemplazar para cambiar el string? 2 En cuanto a lo de matar WhatsApp podrías utilizar la acción de tasker kill app pero sin usar root. En GSM al menos esto lo que hace es precisamente lo que creo que queremos o sea, no lo mata pero hace que tenga q volver a cargar esa cache. 3 Conoces un Intent para lo contrario? Es decir para cerrar el proceso de whatsapp o matarlo y así no recibir notificaciones? Quizá seria con un comando Linux que cierre procesos? Un saludo y enhorabuena. PD: de WhatsApp creo que ya solo nos queda poder cambiar el estado al que eso lo veo harto complicado.
__________________
Fdo: Mlesir. Miembro del equipo que promueve el foro y el recopilatorio de Tasker http://www.htcmania.com/forumdisplay.php?f=969
|
|
#3
|
||||
|
||||
|
No lo he dicho, pero hay algunas aplicaciones que permiten navegar por estas preferencias de forma más "amigable", por ejemplo yo uso esta, básicamente es un sqlite debugger para preferencias... pero luego a la hora de montar una tarea para modificarlas es mejor entrar en el xml a ver el texto exacto en el fichero.
tenía pensado hacerlo, igual que añadir alguna cosa al tutorial de comandos, el comando am permite entre otras lanzar intents desde consola, lo uso en vez de la acción intent de Tasker porque para arrancar el servicio de whatsapp Tasker dice que no tiene los permisos, de esta forma lanzo am como root y si puede. Última edición por maid450 Día 12/02/14 a las 18:29:49. |
| Los siguientes 2 usuarios han agradecido a maid450 su comentario: | ||
|
#4
|
||||
|
||||
|
Bueno pues he estado curioseando por el archivo de whatspp y no he encontrado nada interesante para mi, otros si pueden encontrar algo. Pero...
Me he descargado la app que mencionas y madre mia! Es comodísimo . Y por ejemplo he probado con swiftkey y desde esa app le he puesto en el campo pref_typing_style_autocomplete, con update, 0. Listo. Ya no tiene la funcion autocompletar. Madre mia el campo que acabas de abrir Maid! A destripar mas aplicaciones! PD: pregunto Maid no estara por ese archivo la clave o codigo para poder enviar al servidor de WhatsApp una orden para cambiar xej el estado?
__________________
Fdo: Mlesir. Miembro del equipo que promueve el foro y el recopilatorio de Tasker http://www.htcmania.com/forumdisplay.php?f=969
|
| Los siguientes 2 usuarios han agradecido a mlesir su comentario: | ||
|
#5
|
||||
|
||||
|
Te hago una consulta con la Aplicacion "Preferen Manager" encontre para poner o sacar el pop up del programa de Chats IM+, ya que cambia el valor "MSG-TOAST-NOTIFI" de false a true segun lo cambie. Probe cambiarlo directamnte desde este programa, guardar y matar al pobre IM, al volver a cargar no funciona. Queria saber antes de hacer el procedimiento emulando lo que hiciste con el wasap si podria ser que no funcione de la forma que lo hago y si cambiandolo con tu forma
Última edición por Jusss Día 12/02/14 a las 23:45:05. |
|
#6
|
||||
|
||||
|
Graciassss me re sirve la tarea de WhatsApp. Ahí probé y funciona matando la aplicación sin marcar root cómo sugería mlesir. en %par1 puedo hacer una variable global que valga 1 y remplazar %par1 por esa, no? Se podrá hacer lo mismo pero con las notificaciones de grupo? El nombre debe ser parecido, voy a intentar buscar lo
|
|
#7
|
||||
|
||||
|
Graciassss me re sirve la tarea de WhatsApp. Ahí probé y funciona matando la aplicación sin marcar root cómo sugería mlesir. en %par1 puedo hacer una variable global que valga 1 y remplazar %par1 por esa, no? Se podrá hacer lo mismo pero con las notificaciones de grupo? El nombre debe ser parecido, voy a intentar buscar lo
![]() Yo pongo %par1 porque lo uso como subtarea y es el nombre que le pasa tasker al parametro1 en una subtarea. El popup emergente para grupos está en "group_notify_popup_mode", por si no lo has encontrado Estoy cambiando mi tarea usando finalmente la acción buscar y reemplazar para hacerla más flexible y que se le pueda pasar por variables el fichero, el nombre de la preferencia y el nuevo valor y lo reemplace, escribiré aquí las novedades. |
| Gracias de parte de: | ||
|
#8
|
||||
|
||||
|
[quote=mlesir;12502792]comodísimo . Y por ejemplo he probado con swiftkey y desde esa app le he puesto en el campo pref_typing_style_autocomplete, con update, 0. Listo.
Me interesaría poder cambiar el auto completado de SwiftKey para algunas aplicaciones pero no encuentro esa línea, no la tengo. está en la misma sección de la foto?
|
|
#9
|
||||
|
||||
|
No. De hecho yo no tengo esa sección. Esta en la sección "com.touchtype.swiftkey_preferences.xml"
__________________
Fdo: Mlesir. Miembro del equipo que promueve el foro y el recopilatorio de Tasker http://www.htcmania.com/forumdisplay.php?f=969
|
| Gracias de parte de: | ||
|
#10
|
||||
|
||||
|
|
|
#11
|
||||
|
||||
|
A1: Run Shell [ Command:cat /data/data/com.whatsapp/shared_prefs/com.whatsapp_preferences.xml | sed -e 's/<string name="notify_popup_mode">[^<]*<\/string>/<string name="notify_popup_mode">%par1<\/string>/g' > /data/data/com.whatsapp/shared_prefs/com.whatsapp_preferences.xml Timeout (Seconds):0 Use Root:On Store Output In: Store Errors In: Store Result In: ]
Buenas, me podrías explicar que eso que hace lo que marco en negrita del comando que metes. Es que estoy intentando modificar la preferencia de sonido cuando me conecto a wifi de trabajo pero no termino de entenderlo. Un saludo |
|
#12
|
||||
|
||||
|
Maid uso bastante esta forma que nos enseñaste, al final la modificaste por la accion buscar?
|
|
#13
|
||||
|
||||
|
A1: Run Shell [ Command:cat /data/data/com.whatsapp/shared_prefs/com.whatsapp_preferences.xml | sed -e 's/[^<]*<\/string>/%par1<\/string>/g' > /data/data/com.whatsapp/shared_prefs/com.whatsapp_preferences.xml Timeout (Seconds):0 Use Root:On Store Output In: Store Errors In: Store Result In: ] Buenas, me podrías explicar que eso que hace lo que marco en negrita del comando que metes. Es que estoy intentando modificar la preferencia de sonido cuando me conecto a wifi de trabajo pero no termino de entenderlo. Un saludo
![]() Código:
sed -e /expr_a_buscar/expr_reemplazar_por/flags Así pues, lo otro que has puesto en negrita forma parte de la "expr_a_buscar", que completa es así: Código:
<string name="notify_popup_mode">[^<]*<\/string> Pues bien, con el sed, todos los bloques de texto que cumplan ese patrón serán reemplazados por la "expr_reemplazar_por". Espero que se entienda algo, comprendo que puede resultar algo complejo De todas formas, en la explicación de arriba puedes ver en el sed las expresiones a buscar y para reemplazar, trasteando un poco las puedes aplicar con esa acción... |
|
#14
|
||||
|
||||
|
Te hago una consulta si lo que tengo que modificar es esto: <boolean name="pref_heads_up_master_switch" value="false" /> cambio todo lo que dice "string name" por "boolean name" y el que dice solo "string" por "boolean" y en %par 1 pongo "true" o "false"?
Es para activar o desactivar las notificaciones flotantes de gravity Box, con el programa "preferences managger" si lo pongo a "true" se activa y al poner "false" se desactiva, tras poner "update", pero con la tarea de tasker no. Me fije en la carpeta de preferencias y esta este codigo " <boolean name="pref_heads_up_master_switch" value="false" />" ejecuto esto: "cat /data/data/com.ceco.kitkat.gravitybox/shared_prefs/com.ceco.kitkat.gravitybox_preferences.xml | sed -e 's/<boolean name="pref_heads_up_master_switch">[^<]*<\/boolean>/<boolean name="pref_heads_up_master_switch">true<\/boolean>/g' > /data/data/com.ceco.kitkat.gravitybox/shared_prefs/com.ceco.kitkat.gravitybox_preferences.xml" Mato la aplicacion, y sigue apagado, estara algo mal en el codigo de arriba? Última edición por Jusss Día 19/07/14 a las 22:15:17. |
|
#15
|
||||
|
||||
|
Aparentemente está bien el código.
Tendrías que asegurarte de que tras la ejecución en el fichero resultado se ha cambiado la preferencia, si es así el problema está en que gravity box no recargará las nuevas preferencias igual que whatsapp... si no se cambia habría que investigar un poco más con otras pruebas |
| Gracias de parte de: | ||
|
#16
|
||||
|
||||
|
Aparentemente está bien el código.
Tendrías que asegurarte de que tras la ejecución en el fichero resultado se ha cambiado la preferencia, si es así el problema está en que gravity box no recargará las nuevas preferencias igual que whatsapp... si no se cambia habría que investigar un poco más con otras pruebas ![]() " en la foto marque el codigo que quería cambiar
|
|
#17
|
||||
|
||||
|
Tienes razón, parece que las booleanas van diferentes... prueba algo así:
Código:
cat /data/data/com.ceco.kitkat.gravitybox/shared_prefs/com.ceco.kitkat.gravitybox_preferences.xml | sed -e 's/<boolean name="pref_heads_up_master_switch" value="[true|false]" \/>/<boolean name="pref_heads_up_master_switch" value="true" \/>/g' > /data/data/com.ceco.kitkat.gravitybox/shared_prefs/com.ceco.kitkat.gravitybox_preferences.xml |
|
#18
|
||||
|
||||
|
Tienes razón, parece que las booleanas van diferentes... prueba algo así:
Código:
cat /data/data/com.ceco.kitkat.gravitybox/shared_prefs/com.ceco.kitkat.gravitybox_preferences.xml | sed -e 's///g' > /data/data/com.ceco.kitkat.gravitybox/shared_prefs/com.ceco.kitkat.gravitybox_preferences.xml ![]() Última edición por Jusss Día 04/08/14 a las 17:04:23. |
|
#19
|
||||
|
||||
|
Alguien del foro probó modificar algún dato que sea con "true" y "false"?
|
|
|
![]() |
Estás aquí
|
||||||
|
||||||