Me gustaría comenzar esta actividad desde la terminal: com.android.settings.Settings$PowerUsageSummaryActivity
Lo intenté
am start -S com.android.settings/.Settings$PowerUsageSummaryActivity
y esto es lo que obtengo:
Stopping: com.android.settings
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.settings/.Settings }
El problema es que el am start
comando omite la $PowerUsageSummaryActivity
parte, por lo que básicamente solo estoy abriendo el menú estándar "Configuración". ¿Cómo puedo abrir esa página específica de "resumen de uso de energía" desde la terminal?
'com.android.settings/.Settings$PowerUsageSummaryActivity'
, o escapar de lo$
similarcom.android.settings/.Settings\$PowerUsageSummaryActivity
, que es lo que se suele hacer en el shell cuando se trata de$
signos literales que no indican una variable?Respuestas:
Como escribí en mi comentario, hay algunos caracteres especiales que necesitan un cuidado especial cuando se trabaja en el indicador de comandos de shell (o en scripts de shell). Uno de ellos es el
$
signo, que generalmente indica una variable. Si eso debe tomarse literalmente, debe escapar (o encerrar la cadena completa entre comillas simples). Reglas similares para comillas.Cómo debería verse su comando con un escape
$
, ya puede encontrar en eldarera esta respuesta :Tenga en cuenta la "barra diagonal inversa" en frente de
$
- esa es la señal de escape. Use lo mismo para las comillas o espacios en blanco, si su comando incluye algunos para tomarlos literalmente, por ej.ambos harían lo mismo: convertir la cadena en un solo parámetro. En el ejemplo de su
am start
comando, esto es lo que sucedió al analizar:am
start
-S
com.android.settings/.Settings$PowerUsageSummaryActivity
$
interpretación: la variable$PowerUsageSummaryActivity
no está establecida, por lo que está vacíacom.android.settings/.Settings
Tenga en cuenta también que si ejecuta esto directamente
adb shell
, el comando pasa por el análisis de shell dos veces, por lo que debe escapar o citar el comando nuevamente , así:fuente
adb shell 'am start -n com.android.settings/.Settings\$PowerUsageSummaryActivity'
. No se porque.Escápese
$
en el nombre de la subclase y debería funcionar:Otra opción es enviar la intención que la pantalla de Uso de energía escucha:
Puede encontrar las intenciones mirando las
<action>
etiquetas en el archivo AndroidManifest.xml para la "aplicación" Configuración (que se puede ver en GitHub ). Como ejemplo, aquí está la definición de actividad paraSettings$PowerUsageSummaryActivity
:fuente