No es tan sencillo como los paquetes de anuncios. Aquí hay una excepción (código Bash) sobre cómo mi herramienta Adebar lo hace (para todas las aplicaciones de un dispositivo, enviando los resultados a un archivo como pm disable
en la forma en que lo cita su pregunta), que se encuentra en lib/scriptgen.lib
:
local comps
local myline
scriptname="${OUTDIR}/deadReceivers.sh"
echo "#!${BASH\_LOCATION}" > "${scriptname}"
echo -e "\\n#\\n# Disabled components for ${DEVICE\_NAME} as of $(date '+%Y-%m-%d %H:%M')\\n#" >> "${scriptname}"
for pkg in $(adb ${ADBOPTS} shell "pm list packages 2>/dev/null"); do
pkg=${pkg//\[$'\\t\\r\\n'\]}
pkg=${pkg##\*:}
\[\[ "${pkg}" = "android" \]\] && continue
comps=$(adb ${ADBOPTS} shell "dumpsys package ${pkg}" | grep -E -A99999 "disabledComponents:" |grep -E -B99999 "enabledComponents:")
if \[\[ -n "${comps}" \]\]; then
echo >> "${scriptname}"
echo "# ${pkg}" >> "${scriptname}"
for myline in $comps; do
myline=${myline//\[$'\\t\\r\\n'\]}
\[\[ "${myline}" = "disabledComponents:" || "${myline}" = "enabledComponents:" \]\] && continue
echo "adb ${ADBOPTS} shell \\"pm disable ${pkg}/${myline}\\"" >> "${scriptname}"
done
fi
done
En resumen: tendría que analizar la sección "disabledComponents" de la salida de dumpsys package <package_name>
("comps" en el fragmento de código anterior). Como puede ver, ese segmento va seguido de una lista de habilitado componentes, por si quieres saber dónde encontrarlos.