Ver la Versión Completa : [ SOLUCIONADO ] Saber Aplicaciones instaladas.
JOSNARO
22/05/13, 13:29:49
Bueno chicos, voy a rizar el rizo.
Hay alguna manera de saber si la aplicación X está instalada?
Gracias.
maid450
22/05/13, 14:07:08
Todas las aplicaciones al instalarse crean una carpeta en /data/data con su package name como nombre de carpeta, si con un comando intentamos mostrar el contenido de esa carpeta fallará si no la encuentra (lo que significaría que no está instalada).
Lo primero es averiguar el package name de la app que quieres comprobar.
Lo más sencillo es mirar en la URL de su página en google play, pondrá ...id=...&... el package name es lo que va entre "id=" y el "&" que haya despues (o hasta el final de la URL si no hay).
Una vez lo tenemos (voy a usar por ejemplo el skype, su packagename es "com.skype.raidera") creamos una acción "Script->Ejecutar consola" y ponemos el comando
ls /data/data/com.skype.raidera/reemplazando claro está el packagename del skype por el que se quiera (ojo a la barra que hay al final, no es necesaria, pero recomendable)
De la acción solo nos interesa el resultado, no la salida ni los errores, así que lo almacenamos en una variable (por ejemplo %resultado) y nos acordamos de marcar "Continuar en caso de errores", no hace falta root, asi que no hay por qué marcarlo.
Despues en la siguiente acción si %resultado vale 0 es que la carpeta existe y por tanto la aplicación está instalada, si devuelve cualquier otra cosa no lo está.
JOSNARO
22/05/13, 14:49:03
Ok, entendido. Cuando llegue lo pruebo.
Muchas gracias.
tevaadarelsol
22/05/13, 18:50:59
Y no sería más útil buscar por el nombre del paquete en /data/app, o en /system/app? puesto que si está instalada, debe de estar en una de esas dos rutas...
Maid lo he intentado y no me funciona. En el registro de tasker me sale Errignore.
Lo he intentado con varias carpetas y nada.
Si lo pruebo en el emulador de consola dice not found.
He probado a meter solo ls y entonces si me sale en el emulador un listado de los archivos como sys, temp, etc.
También probe la acción de tasker de listar archivos para no tener que utilizar script pero parece que con data no funciona, no mete nada en la variable. Sin embargo con archivos que puedes escoger con el explorador de tasker si. El explorador de tasker no te deja ir a la raíz del sistema y ya te digo que si le escribo yo la ruta no mete el nombre de los archivos. Quiza sea porque file explorer no tiene acceso root como otros exploradores de archivos ?
maid450
20/06/13, 08:12:29
Maid lo he intentado y no me funciona. En el registro de tasker me sale Errignore.
Lo he intentado con varias carpetas y nada.
Si lo pruebo en el emulador de consola dice not found.
He probado a meter solo ls y entonces si me sale en el emulador un listado de los archivos como sys, temp, etc.
También probe la acción de tasker de listar archivos para no tener que utilizar script pero parece que con data no funciona, no mete nada en la variable. Sin embargo con archivos que puedes escoger con el explorador de tasker si. El explorador de tasker no te deja ir a la raíz del sistema y ya te digo que si le escribo yo la ruta no mete el nombre de los archivos. Quiza sea porque file explorer no tiene acceso root como otros exploradores de archivos ?
La verdad es que no lo he probado personalmente, pero si debería funcionar, a malas prueba ejecutar el comando como root, aunque permiso de lectura sobre /data si deberías tener (no de escritura, pero no hace falta para un ls).
Tal vez en los Samsung no se guarden las aplicaciones en /data/data? pero me parecería raro...
Con el ES File explorer si puedes explorar como root, está en "Herramientas -> Explorador Root" mira a ver el contenido de las carpetas de /data a ver si encuentras donde están los datos de las aplicaciones.
Después, el comando "ls carpeta" muestra el contenido de una carpeta y el resultado (no la salida) es 0 cuando se ejecuta correctamente (la carpeta existe y se puede listar) y otra cosa si no.
Y no sería más útil buscar por el nombre del paquete en /data/app, o en /system/app? puesto que si está instalada, debe de estar en una de esas dos rutas...
No comenté nada de esta solución, es posible hacerlo así, pero ya tienes que buscar en 2 directorios (en /system/app solo están los apks de las apps del sistema y en /data/apps están los demás, en /data/data están las carpetas de datos de TODAS las apps) y además, al menos en mi movil, los apks en /data/apps tienen el nombre de la aplicación más un sufijo variable ("-1", "-2"...) que no se a que se debe, con lo que ya habría que buscar sin tener en cuenta los sufijos... vamos, que lo veo más complicado.
Se me olvido comentarlo pero también probe con root marcado y nada.
Si que están las carpetas con las apps en data/data.
Perdón quería decir file magic, o sea el explorador q trae tasker y utiliza tasker. Con este no puedo ver más la raíz del sistema.
En fin no es una cosa q sea muy importante, lo único es que en la app que estoy haciendo me gustaría que detectará si el usuario tiene los plugin instalado y que no sea el usuario el que lo tenga q poner, ya que queda un poco cutre.
Intentare ver en el foro oficial a ver si hay algo.
Lo que me fastidia es que no funcione lo de listar archivos q para mi seria lo más fácil y asequible. Además puedes ponerle coincidencia de patrones con lo cual seria ideal para estos casos.
Jksk (544)
A1: Prueba [ Tipo:Package Name Datos:com.intangibleobject.securesettings.plugin Almacenar Resultado en:%cont Continuar Tarea Tras Error:Encendido ]
A2: Flash [ Texto:%cont Largo:Apagado ]
Con la acción de probar dentro de misceláneo, he conseguido saber si tengo por ejemplo secure settings instalado. Hay que marcar en el menú package name y poner el nombre como dice maid en datos.
La verdad es que lo he descubierto de chiripa iba buscando otra cosa y me encontré con esta acción. Le di al menú y estuve curioseando hasta que vi lo de package name y se me encendió la bombilla.
Tendré que ver q más cosas puede hacer esta acción, pq tiene más opciones en el menú.
Os dejo la transcripción de la tarea para que veáis como si lo tenéis os pone secure settings. Si da error o no encuentra nada os pondrá la variable vacía. Acordaros de marcar seguir con error pq si no se para la tarea.
(me encanta tasker tiene tantas cosas que a veces te pasa esto,... y nosotros dándole a los scripts! Jeje).
Edito:
Puff! Que maravilla! Si le das a la lupa por lo menos en el caso de package name y de acciones, perfiles y eventos te sale un listado para que solo tengas q clikar.
En el caso de los contactos parece que si tiene más de un número de teléfono solo funciona si ponemos el primero.
Bueno pues creo un nuevo tema y seguimos viendo esta acción ahí para no mezclar. Seguimos aqui:
http://www.htcmania.com/showthread.php?p=9258109
Caravantes
07/07/13, 01:33:43
Aunque la consulta concreta del compañero Josnaro parece resuelta, me he dado cuenta de que se puede dar una respuesta al título del hilo:
Saber Aplicaciones instaladas.
En Android, el comando PM significa Packet Manager (Gestor de Paquetes) y ofrece algunas posibilidades interesantes.
En Tasker, con la acción Ejecutar Consola podemos ejecutar comandos del sistema Android. El comando pm list packages devuelve un listado con todos los nombres (package name) de los paquetes o aplicaciones instaladas, listado que tiene este aspecto:
package:com.google.android.location
package:com.tmobile.selfhelp
package:com.android.voicedialer
package:com.android.defcontainer
package:com.android.launcher
package:com.google.android.maps.mytracks
package:com.android.debugtool
package:com.android.contacts
package:com.android.phone
package:com.tmobile.userkeystool
package:com.android.calculator2
package:com.android.htmlviewer
package:com.android.providers.calendar
package:com.android.bluetooth
package:com.android.calendar
package:com.android.browser
package:com.android.music
package:com.google.tts
package:com.android.email.policy
package:com.android.qxdmlog
package:com.android.mms
package:com.android.provision
package:com.htc.copyright
package:com.android.providers.media
package:com.android.certinstaller
package:com.google.android.deskclock
package:com.android.updater
package:com.android.settings
package:com.google.android.carhome
A mayores, pm list packages -f devuelve un listado similar con el directorio o carpeta correspondiente a cada app.
En configuración de la acción Ejecutar Consola, tenemos que escribir un nombre de variable en la casilla Almacenar-Salida-En, y esa variable será la que recoja el listado devuelto por el comando. En las acciones siguientes de la tarea podemos explorar o manipular el contenido de esa variable que contiene el listado.
Al ser solo una consulta, supongo que esto funcionará sin Root, aunque no estoy seguro, estaría bien que alguien lo confirmase o desmintiese (confirmado posteriormente por el compañero Soymicmic, ver más abajo).
Otro detalle: una vez conocido el package name, se puede construir fácilmente la URL que la app tendría en Google-Play (suponiendo que esté en Google-Play) del siguiente modo:
https://play.google.com/store/apps/details?id=package-name
Por ejemplo, en el listado anterior vemos que uno de los Package-Name es com.google.android.maps.mytracks , y su URL sería
https://play.google.com/store/apps/details?id=com.google.android.maps.mytracks (https://play.google.com/store/apps/details?id=com.google.android.maps.mytracks)
En esa página vemos que el nombre "común" (comercial) de la app es "My Tracks".
Más información sobre el comando PM, en el siguiente post del compañero Emilitingo
http://www.htcmania.com/showthread.php?p=3390627
Y también en
http://www.cyberhades.com/2012/03/01...on-en-android/
soymicmic
08/07/13, 09:28:22
Al ser solo una consulta, supongo que esto funcionará sin Root, aunque no estoy seguro, estaría bien que alguien lo confirmase o desmintiese.
Confirmo: funciona sin ROOT ;)
Muchas gracias por las explicaciones
Descripcion Tarea:
Lista Paquetes:
A1: Ejecutar consola [ Comando:pm list packages Cuenta atrás (segundos):0 Usar Root:Apagado Almacenar Salida En:%LIS_PACK Almacenar Errores En: Almacenar Resultado en: ]
A2: Flash [ Texto:%LIS_PACK Largo:Apagado ]
vBulletin® v3.8.1, Copyright ©2000-2026, Jelsoft Enterprises Ltd.