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
A partir de Android 10 roles se guardan en
/data/system/users/<user_id>/roles.xml
que puede ser volcado utilizandodumpsys 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
ysettings
) podría volcar la información requerida. O puede ver los archivos directamente si el acceso Root está disponible.0 votos
Gracias de nuevo.
settings
no los muestra, y parapm
No he visto el parámetro correspondiente. Qué sonó cerca estabacmd package resolve-activity -c android.intent.category.LAUNCHER
- pero eso no devuelve nada ("No activity found") en todo lo que he intentado. Pude identificar el marcador usandocmd package resolve-activity tel://123456
; de forma similar el navegador con una URL http (produce el SO (paqueteandroid
) si no está establecido por defecto, interesante) y la aplicación de correo con unmailto:john@example.com
. Pero, ¿qué acciones intentar para la pantalla de inicio, el asistente, etc.?0 votos
Por "aplicaciones por defecto", ¿te refieres a las aplicaciones que el usuario puede configurar desde los Ajustes (por ejemplo, el marcador por defecto, la cámara por defecto), a las aplicaciones por defecto "abiertas con", o a ambas? Aparte de las que se establecen explícitamente desde los Ajustes, la mayoría de las aplicaciones se establecen por defecto desde las llamadas intentos implícitos -- normalmente para un tipo de archivo/mime específico o algunos esquemas de URL -- que coinciden con los filtros de intención registrados en el archivo de manifiesto de las aplicaciones. Sin embargo, no he investigado dónde se almacenan estos valores en el sistema.
0 votos
Inicialmente el primer grupo (como muestra mi respuesta) - pero el segundo grupo también sería interesante. En realidad, yo diría que se solapan. En uno de mis dispositivos, por ejemplo, el correo por defecto se resuelve con k9 mail, ya que es la única aplicación de correo disponible (la otra está desactivada). Incluso utilicé la forma de "intención implícita" para las URLs supongo (sin saber su nombre, ¡gracias por eso!) Aunque al resolver vía MimeTypes, eso podría ser una larga comprobación ;)