Android: Отобразить название приложения открытого в данный момент

Когда я очищал свой смартфон Honor 20 pro от предустановленного мусора, было довольно тяжело понять название открытого приложения (package name).

Обратите внимание, не запущенного, а именно открытого (видимого на экране).

 

Даже если открыть окошко с информацией о приложении, то там не будет видно его полное название. Например для приложения WhatsApp будет просто указано его название и версия. Таким образом, чтобы выяснить название пакета, мне приходилось залезать в Play Market на страницу этого приложения и копировать её URL:

https://play.google.com/store/apps/details?id=com.whatsapp

После этого я копировал из этого адреса часть строки с ID:

com.whatsapp

Это было возможно, если я знал это приложение и при этом оно было на Play Market. В случае с китайскими приложениями такое уже не прокатывало — их не было на Play Market.
Сегодня я нашёл способ узнать название пакета для открытого в данный момент приложения (только того, которое отображается в данный момент на экране устройства)

adb shell "dumpsys activity recents | grep 'Recent #0' | cut -d= -f2 | sed 's| .*||' | cut -d '/' -f1"
Замечу, что если вы через adb зайдёте в шелл и туда ВСТАВИТЕ эту строчку:

dumpsys activity recents | grep 'Recent #0' | cut -d= -f2 | sed 's| .*||' | cut -d '/' -f1

То в ней произойдёт замена символов. В итоге конечная строка будет выглядеть так:

dumpsys activity recents 124 grep 39Recent 35039 124 cut -d= -f2 124 sed 39s124 .*12412439 124 cut -d 39/39 -f1

 

Поэтому лучше всё же для данной операции не заходить в шелл, а использовать его как промежуточный вариант:

C:\Users\Denis\AppData\Local\Android\Sdk\platform-tools>adb shell "dumpsys activity recents | grep 'Recent #0' | cut -d= -f2 | sed 's| .*||' | cut -d '/' -f1"
com.whatsapp
Если же нужно увидеть список всех работающих в данный момент процессов, можно это сделать так:

ps -A | grep u0_

Это отобразит только процессы пользователя, игнорируя фоновые системные процессы.