나는 이것을 안드로이드에서 실행하고 있습니다.
주문하다:
dumpsys activity activities | grep mFocusedApp
산출:
mFocusedApp=ActivityRecord{273535b u0 com.any.some/.app.AnyActivity t5595}
예상되는:
com.any.some
sed 또는 기타 직접 명령을 통해 패키지 이름이 필요합니다.
편집하다(댓글에서 복사했습니다.답변;결과 문자열이 명령에 인수로 전달되어야 함을 명확히 하기 위해 추가되었습니다. )
현재 초점을 맞춘 애플리케이션을 다시 시작해야 하므로 패키지 이름을 얻은 후 다음과 같이 전달 am stop
하고 중지 해야 합니다 am start
.
am stop com.any.some && am start com.any.some
답변1
GNU 사용 grep
:
focusApp=$(
dumpsys activity activities |
grep -Po '^mFocusedApp=\S+\{\S+ \S+ \K[^\s/]+'
)
기준:
focusApp=$(
dumpsys activity activities |
sed -n 's/^mFocusedApp=[^ ]\{1,\}{[^ ]\{1,\} [^ ]\{1,\} \([^\s/]+\).*/\1/p'
)
답변2
아마도
dumpsys activity activities | grep '^mFocusedApp=' | sed 's#.* \([^ ]*\)/.*#\1#'
정규 표현식은 및 사이에 공백이 아닌 모든 문자와 일치합니다
/
.
시험용
echo 'mFocusedApp=ActivityRecord{273535b u0 com.any.some/.app.AnyActivity t5595}' |sed 's#.* \([^ ]*\)/.*#\1#'
산출:
com.any.some
(모든 관련 입력에 대해 이것이 작동하는지 확인하려면 더 많은 예제가 필요합니다.)
댓글에 답장:
다른 명령에 패키지 이름을 사용하려면 출력을 변수에 저장할 수 있습니다.
package=$(dumpsys activity activities | grep '^mFocusedApp=' | sed 's#.* \([^ ]*\)/.*#\1#')
am stop "$package" && am start "$package"
답변3
이것이 왜 출력이어야 하는지는 말하지 않았지만 다음은 여러분이 원하는 것을 추측하는 것입니다.
dumpsys activity activities| awk -F'[ /]' '/^mFocusedApp=/{print $3}'
com.any.some
답변4
stdin=$(
dumpsys activity activities |
grep mFocusedApp |
cut -d "{" -f2 |
cut -d " " -f3 |
cut -d "/" -f1
)
am force-stop "$stdin" && am start "$stdin"
휴, 모두 고마워요