Como escribí en mi comentario, hay algunos caracteres especiales que necesitan un cuidado extra cuando se trabaja en el prompt del shell (o en los scripts del shell). Uno de ellos es el $
que suele indicar una variable. Si hay que tomarlo literalmente, hay que escaparlo (o encerrar toda la cadena entre comillas simples). Reglas similares para las comillas.
Cómo debería ser su comando con un se ha escapado $
ya se puede encontrar en Respuesta de eldarerathis :
shell@android:/ # am start -n com.android.settings/.Settings\$PowerUsageSummaryActivity
Obsérvese la "barra invertida" delante del $
-- esa es la señal de escape. Utilice lo mismo para las comillas o los espacios en blanco, si su comando incluye algunos que deben tomarse literalmente, por ejemplo
myscript.sh first\ parameter\!
myscript.sh "first parameter!"
ambos harían lo mismo: convertir la cadena en un único parámetro. En el ejemplo de su am start
esto es lo que ocurrió al analizarlo:
- comando:
am
- parámetro 1:
start
- parámetro 2:
-S
- parámetro 3:
com.android.settings/.Settings$PowerUsageSummaryActivity
- tiene un
$
, interpretando: variable $PowerUsageSummaryActivity
no está configurado, por lo que está vacío
- conclusión: el parámetro 3 es
com.android.settings/.Settings
Tenga en cuenta también que si ejecuta esto directamente a través de adb shell
El comando pasa dos veces por el análisis del shell, por lo que hay que escapar o entrecomillar el comando de nuevo así:
user@desktop:~$ adb shell am start -n 'com.android.settings/.Settings\$PowerUsageSummaryActivity'
2 votos
¿Has probado a ponerlo entre comillas simples, es decir
'com.android.settings/.Settings$PowerUsageSummaryActivity'
-- o escapar de la$
comocom.android.settings/.Settings\$PowerUsageSummaryActivity
-- que es lo que se suele hacer en la cáscara cuando se trata de literales$
signos no indicando una variable?0 votos
¿Qué tal abrir la actividad RunLog de Tasker en la parte superior desde el terminal? Tasker tiene un menú de 3 puntos para abrir la ventana de registro.