6 votos

Recuperar (la lista de) aplicaciones por defecto a través de ADB

Muchos de ustedes conocerán (o al menos habrán oído hablar) de comandos como adb shell pm list packages o adb shell dumpsys package para recuperar una lista de aplicaciones disponibles en su dispositivo. Lo que estoy buscando y no puedo encontrar es un comando para listar las aplicaciones por defecto - como lo que se establece como lanzador por defecto, cámara por defecto, navegador por defecto, etc. Ni siquiera se pueden analizar los detalles completos de todas las aplicaciones a través de, por ejemplo for app in $(pm list packages); do [[ -n "$(dumpsys package ${app#package:} | grep APP_BROWSER)" ]] && echo ${app#package:}; done revela que (el comando simplemente listaría todos los navegadores web en el dispositivo).

Entonces, ¿cómo puedo consultar esas aplicaciones por defecto a través de ADB? Está bien si tengo que pasar el "tipo" (como APP_BROWSER en mi ejemplo) siempre que haya una referencia de tipos disponible.

0 votos

A partir de Android 10 roles se guardan en /data/system/users/<user_id>/roles.xml que puede ser volcado utilizando dumpsys role .

0 votos

Gracias, @IrfanLatif - eso es lo que estaba buscando en dumpsys. Parece que role se añadió sólo con Q (y superior), ya que no está disponible en los dispositivos Oreo o inferiores que tengo aquí para probar (no comprobó aún con el de Pie ya que está actualmente "ocupado"). Alguna pista para que funcione al menos con Oreo, e idealmente también por debajo? Quiero decir, el concepto de "apps por defecto" se remonta al menos a 2.x IIRC - por lo que el sistema debe recordarlas en algún lugar allí también. He peinado dumpsys arriba y abajo, no encontré ninguna pista.

0 votos

No tengo acceso a ninguna versión de Android que no sea Q ATM. Pero IIRC estos ajustes se dividieron en varios lugares, al menos /data/system/users/0/package-restrictions.xml y /data/system/users/0/settings_secure.xml . Así que las respectivas herramientas CLI ( pm y settings ) podría volcar la información requerida. O puede ver los archivos directamente si el acceso Root está disponible.

4voto

Izzy Puntos 45544

Mientras tanto he encontrado una solución en parte que funciona con Android 7/8 y superior (cuando el cmd package se ha añadido):

  • Marcador por defecto: cmd package resolve-activity tel://123456
  • Correo por defecto: cmd package resolve-activity mailto:john@example.com
  • Navegador por defecto: cmd package resolve-activity http://www.example.com/
  • Mensajería por defecto: cmd package resolve-activity sms://123456
  • Lanzador de pantalla de inicio por defecto: cmd package resolve-activity -c android.intent.category.HOME -a android.intent.action.MAIN

En la salida, entonces grep para packageName= (por ejemplo packageName=com.android.messaging para la aplicación de SMS por defecto). Si una acción determinada no tiene un conjunto de valores por defecto (por ejemplo, hay varios navegadores instalados pero ninguno fue declarado como "siempre utilizado"), la acción se resolverá al sistema operativo ( packageName=android ) para preguntar al usuario. Nota al margen: si quiere comprobar las alternativas disponibles, sólo tiene que sustituir resolve-activity con query-activities (tenga en cuenta que también puede devolver un mensaje como "No se han encontrado actividades", especialmente en Android < 8).

Lo llamo "parcialmente resuelto" ya que le faltan varias aplicaciones por defecto a las que no tengo ni idea de qué actividad pedir - como el lanzador de pantalla de inicio por defecto (nota: sólo lo imaginé) o la aplicación del asistente (¡se agradecen las sugerencias!).

Gracias a Irfan Latif por señalar una solución para Android 10 y superiores. Aquí, el gestor de funciones que ya había encontrado pero no sabía cómo llamarlo a través de ADB. Resulta que era porque todos mis dispositivos están ejecutando Android < 10 (y como se acaba de decir, el administrador de roles se añadió con Android 10), y el comando sería dumpsys role (pero no está disponible antes de Android 10).

0 votos

PD: Sigue faltando algo que resuelva la app de Contactos, la de Emergencia y la de Asistente

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X