Faq пример получения списка запущенных приложений


Получение списка запущенных приложений, заказанных при последнем использовании

13 0xced [2009-06-03 17:18:00]

Я хотел бы получить список запущенных приложений в том же порядке, что и при выполнении ⌘ + ⇥

т.е. если я использую TextEdit, затем Предварительный просмотр, затем iCal, порядок

  • ческих
  • Предварительный просмотр
  • TextEdit

Использование [[NSWorkspace sharedWorkspace] launchedApplications] не работает, поскольку приложения сортируются по дате запуска/идентификатору процесса. Перечисление с помощью GetNextProcess не работает, так как оно также упорядочивается с помощью pid.

Регистрация для уведомлений и сохранение списка сами по себе не является вариантом, так как я должен знать список сразу после запуска приложения. Ну, первого элемента списка было бы достаточно на самом деле, но я думаю, что это почти такой же вопрос.

Есть ли какой-нибудь API для получения этой информации?

Как получить список запущенных приложений?

Я работаю над приложением, которому требуется информация о приложениях, работающих в системе до сих пор. Существует ли API/метод для получения такой информации?

Вы не можете обнаруживать запуск приложения на Android, но вы можете получить список открытых приложений и проверить, открыто ли приложение, которое вы ищете, или не используете следующий код:

Вы также можете проверить, работает ли приложение на переднем плане с помощью этого метода.

Вы можете получить информацию о запуске процессов с помощью класса ActivityManager.

Faq пример получения списка запущенных приложений

Private Declare Function FindWindow Lib «user32» Alias «FindWindowA» (ByVal _
lpClassName As String, ByVal lpWindowName As String) As Long

hW = FindWindow(vbNullString, «about:blank — Microsoft Internet Explorer» & Chr(0))

anti_loop/vbmisc/wnd.html — Microsoft Internet Explorer. �� ��� ���-�� � ���� ����. �� ����� ���� �� � ����� � ������� FindWindow. ��� � � ��� �������.

Sub GetTaskList()
‘�������� hWnd, ������� ����� ������ � ������
‘����� ����, �� ������ �������� ������ ������
CurrWnd = GetWindow(Me.hwnd, GW_HWNDFIRST)
‘���� ������������ hWnd ����� �����, ��������� ����
Do While CurrWnd <> 0
‘�������� ����� ����� ������� �� CurrW nd
Length = GetWindowTextLength(CurrWnd)
‘�������� ��� ������ �� ������
ListItem = Space(Length + 1)
Length = GetWindowText(CurrWnd, ListItem, Length + 1)
‘���� �������� ��� ������, ������ ��������� �� � ������ ���������
If Length > 0 Then
List1.AddItem ListItem
End If
‘��������� � ��������� ������ �� ������
CurrWnd = GetWindow(CurrWnd, GW_HWNDNEXT)
DoEvents
Loop
End Sub

Private Declare Function GetWindow Lib «user32» (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetWindowText Lib «user32» Alias «GetWindowTextA» (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindowTextLength Lib «user32» Alias «GetWindowTextLengthA» (ByVal hwnd As Long) As Long

Const GW_HWNDFIRST = 0
Const GW_HWNDNEXT = 2

Private Declare Function PostMessage Lib «user32» Alias «PostMessageA» _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As _ Any) As Long

Const WM_CLOSE = &H10

>Private Sub Command1_Click()
Dim hW as Long
hW=FindWindow(vbNullString,List1.Text & Chr(0))
PostMessage hW,WM_QUIT,0,0
End Sub

Private Sub Form_Load()
GetTaskList
End Sub

Получение списка приложений в Andro >

Android SDK предоставляет много средств для работы с системой. В том числе он позволяет получать список приложений, которые установлены на устройстве. Это может быть полезно, когда нужно получить сведения о сторонних приложениях (размер APK, путь до приложения, имя пакета и т.д.). Например, в наших приложениях получение списка, содержащего сторонние приложения, играет большую роль: в GreenBro с помощью этого списка выводятся сведения о приложениях, а также выполняются различные действия.

В Менеджере системных приложений и APK Extractor же список приложений необходим, чтобы удалять приложения и извлекать APK из приложений соответственно.

В этой статье мы рассмотрим, как можно получать список приложений, установленных на устройстве, а также как происходит установка приложений на устройство.

Класс PackageManager

PackageManager предоставляет API, который фактически управляет установкой, удалением и обновлением приложений. Когда мы устанавливаем файл APK, PackageManager анализирует этот APK и выводит результат.

Получить экземпляр класса PackageManager можно с помощью метода getPackageManager(). PackageManager предоставляет методы для запросов к установленным пакетам и соответствующим разрешениям.

Где хранятся файлы APK на Android?


В зависимости от типа данных, на Androiid файлы могут храниться в следующих местах:

  • Предустановленные и системные приложения (Камера, Браузер и т.д.) хранятся в /system/app/
  • Установленные пользователем приложения хранятся в /data/app/
  • PackageManager создаёт каталог /data/data/ / для хранения базы данных, файлов с предпочтениями, нативных библиотек и кеша.

Как PackageManager хранит информацию о приложении?

Менеджер пакетов хранит информацию о приложении в трёх файлах, расположенных в /data/system.

packages.xml

Этот XML-файл содержит список разрешений и пакеты\приложения. Он хранит две вещи: разрешения и пакет. Например:

Разрешения хранятся в теге

. Каждое разрешение имеет три атрибута: name, package и protection. Атрибут name это имя разрешения, которое мы используем в AndroidManifest.xml. Атрибут package указывает на пакет, которому принадлежит разрешение, в большинстве случаев это «android». Атрибут protection указывает на уровень безопасности.

содержит 10 атрибутов и несколько подтегов.

Атрибут Описание
name Имя пакета
codePath Путь установки APK
nativeLibraryPath Нативная библиотека, расположенная по умолчанию в /data/data/ /lib
flag Хранит флаги ApplicationInfo
ft Время в шестнадцатtричном формате
lt Время установки в шестнадцатеричном формате
ut Время последнего обновления в шестнадцатеричном формате
version Код версии из AndroidManifest.xml
sharedUserId Идентификатор пользователя Linux, который будет использоваться совместно с другими приложениями.
userId Идентификатор пользователя Linux

Подтеги же здесь следующие:

  • представляет собой информацию о сигнатуре, атрибут count — количество тегов .
  • это ключ сертификата, атрибут index представляет собой глобальный индекс сертификата.

содержат разрешения, которые разработчик установил в AndroidManifest.xml

packages.list

Это простой текстовый файл, содержащий имя пакета, идентификатор пользователя, флаги и каталог data.

package-stopped.xml

Этот файл содержит список пакетов, которые были остановлены. Остановленные приложения не могут принимать широковещательные сообщения.

Получаем список приложений

Рассмотрим получение списка установленных приложений на примере GreenBro.

При запуске приложения запускается AsyncTask, внутри которого получаем экземпляр PackageManager и затем копируем в список List все данные об установленных приложениях.

Метод getInstalledApplications() принимает в качестве параметра флаг GET_META_DATA, который определяет, что нам нужные метаданные каждого пакета.

Результатом является список объектов ApplicationInfo для каждого установленного приложения. Класс ApplicationInfo предоставляет подробную информацию о пакете, собранную из тега в AndroidManifest.xml, нам оттуда нужны лишь самые важные данные.

Поэтому в цикле проверяем каждый объект из полученного списка и записывать данные в собственный класс AppInfo, чтобы затем использовать в основном потоке.

Здесь с помощью метода getPackageInfo() класса PackageManager мы получаем общую информацию о приложении по заданному имени пакета. После эта информация объединяется с информацией, полученной от getInstalledApplications() и сохраняется в объекте AppInfo со следующими полями:

  • title — название приложения
  • packageName — имя пакета
  • sourceDir — полный путь до APK приложения
  • publicSourceDir — путь до общедоступных частей sourceDir
  • versionName — имя версии
  • isSystem — определяет, является ли приложение системным
  • size — размер приложения (в удобной форме)
  • longSize — размер приложения в long
  • dataDir — полный путь к каталогу data
  • nativeLibraryDir — путь до нативных библиотек
  • modified — дата последнего изменения
  • firstInstallTime — дата установки
  • lastUpdateTime — дата последнего обновления
  • enabled — определяет, включено ли приложение

Чтобы узнать название приложения, можно также воспользоваться PackageManager, как показано ниже.

Проверка же на то, является ли приложение системным, тоже достаточно проста и показана ниже.

В конце работы AsyncTask возвращает результат обратно в основной поток. Вот и всё, мы загрузили себе список всех установленных на устройстве приложений и можем продолжить с ним работу.


Получение списка приложений в Android : 2 комментария

Подскажите пожалуйста, в конструкции:
final PackageManager pm = context.getPackageManager();
List apps = new ArrayList();
List packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
Чем является «context»?

Это локальная переменная, Вы можете передавать контекст из активити или фрагмента

Список процессов Linux

На сайте уже есть несколько статей про процессы Linux, в которых подробно описано как ими управлять или как завершить один или группу процессов, но это еще не все. Чтобы правильно управлять процессами и ориентироваться в них вам нужно научиться анализировать список процессов Linux, понимать что значит каждый пункт и зачем он нужен.

В этой статье мы подробно рассмотрим как посмотреть список процессов, разберем какими бывают процессы, почему так происходит и что с этим делать.

Что такое процесс?

Процесс Linux — это экземпляр программы, запущенный в памяти. Все процессы можно разделить на обычные и фоновые. Более подробно об этом написано в статье управление процессами Linux. Linux — это многопользовательская система, каждый пользователь может запускать одни и те же программы, и даже один пользователь может захотеть запустить несколько экземпляров одной программы, поэтому ядру нужно как-то идентифицировать такие однотипные процессы. Для этого каждому процессу присваивается PID (Proccess Identificator).

Каждый из процессов может находиться в одном из таких состояний:

  • Запуск — процесс либо уже работает, либо готов к работе и ждет, когда ему будет дано процессорное время;
  • Ожидание — процессы в этом состоянии ожидают какого-либо события или освобождения системного ресурса. Ядро делит такие процессы на два типа — те, которые ожидают освобождения аппаратных средств и приостановление с помощью сигнала;
  • Остановлено — обычно, в этом состоянии находятся процессы, которые были остановлены с помощью сигнала;
  • Зомби — это мертвые процессы, они были остановлены и больше не выполняются, но для них есть запись в таблице процессов, возможно, из-за того, что у процесса остались дочерние процессы.

А теперь давайте перейдем ближе к практике и поговорим о том, как узнать запущенные процессы linux.

Список процессов Linux

Самые популярные команды для решения этой задачи — это ps, top и htop. Последние две команды мы уже рассматривали в предыдущих статьях, собственно, они интерактивные и с ними у вас не возникнет проблем. Сейчас же хотелось бы остановиться более детально на ps. Сначала рассмотрим общий синтаксис команды, здесь все очень просто:

$ ps опции

$ ps опции | grep параметр

Во втором варианте мы используем утилиту grep для того, чтобы отобрать нужные нам процессы по определенному критерию. Теперь рассмотрим опции утилиты. Они делятся на два типа — те, которые идут с дефисом Unix и те, которые используются без дефиса — BSD. Лучше пользоваться только опциями Unix, но мы рассмотрим и одни и другие. Заметьте, что при использовании опций BSD, вывод утилиты будет организован в BSD стиле.

  • -A, (a) — выбрать все процессы;
  • -a — выбрать все процессы, кроме фоновых;
  • -d, (g) — выбрать все процессы, даже фоновые, кроме процессов сессий;
  • -N — выбрать все процессы кроме указанных;
  • — выбирать процессы по имени команды;
  • -G — выбрать процессы по ID группы;
  • -p, (p) — выбрать процессы PID;
  • —ppid — выбрать процессы по PID родительского процесса;
  • -s — выбрать процессы по ID сессии;
  • -t, (t) — выбрать процессы по tty;
  • -u, (U) — выбрать процессы пользователя.
  • — отображать информацию планировщика;
  • -f — вывести максимум доступных данных, например, количество потоков;
  • -j, (j) — вывести процессы в стиле Jobs, минимум информации;
  • -M, (Z) — добавить информацию о безопасности;
  • -o, (o) — позволяет определить свой формат вывода;
  • —sort, (k) — выполнять сортировку по указанной колонке;
  • -L, (H)— отображать потоки процессов в колонках LWP и NLWP;
  • -m, (m) — вывести потоки после процесса;
  • -V, (V) — вывести информацию о версии;
  • -H — отображать дерево процессов linux;

Теперь, когда вы знаете синтаксис и опции, можно перейти ближе к практике и посмотреть запущенные процессы в Linux. Чтобы просто посмотреть процессы в linux в текущей оболочке используйте команду без параметров:

Все процессы, кроме лидеров групп, в том же режиме отображения:

Все процессы, включая фоновые и лидеры групп:

Чтобы вывести больше информации о процессах используйте опцию -f:

При использовании опции -f команда выдает такие колонки:

  • UID — пользователь, от имени которого запущен процесс;
  • PID — идентификатор процесса;
  • PPID — идентификатор родительского процесса;
  • C — процент времени CPU, используемого процессом;
  • STIME — время запуска процесса;
  • TTY — терминал, из которого запущен процесс;
  • TIME — общее время процессора, затраченное на выполнение процессора;
  • CMD— команда запуска процессора;
  • LWP — показывает потоки процессора;
  • PRI — приоритет процесса.

Например, также можно вывести подробную информацию обо всех процессах:

Больше информации можно получить, использовав опцию -F:

Если вы хотите получить еще больше информации, используйте вместо -f опцию -l:

Дальше мы можем отобрать все процессы, запущенные от имени определенного пользователя:

С помощью опции -H можно отобразить дерево процессов:


Если вас интересует информация только об определенном процессе, то вы можете использовать опцию -p и указать pid процесса linux:

Через запятую можно указать несколько PID:

Опция позволяет фильтровать процессы по имени, например, выберем только процессы chrome:

Дальше можно использовать опцию -L чтобы отобразить информацию о процессах:

Очень интересно то, с помощью опции -o можно настроить форматирование вывода, например, вы можете вывести только pid процесса linux и команду:

Вы можете выбрать такие колонки для отображения: pcpu, pmem, args, comm, cputime, pid, gid, lwp, rss, start, user,vsize,priority. Для удобства просмотра можно отсортировать вывод программы по нужной колонке, например, просмотр процессов linux, которые используют больше всего памяти:

Или по проценту загрузки cpu:

ps -FA —sort pcpu

Еще одна опция — M, которая позволяет вывести информацию про права безопасности и флаги SELinux для процессов:

Общее количество запущенных процессов Linux можно узнать командой:

Мы рассмотрели все основные возможности утилиты ps. Дальше вы можете поэкспериментировать с ее параметрами и опциями чтобы найти нужные комбинации, также можно попытаться применить опции BSD.

Выводы

Команда ps может быть очень полезной если система перегружена и вам необходимо срочно узнать запущенные процессы linux чтобы освободить память или ресурсы процессора. Интерактивные средства не всегда могут помочь, потому что они потребляют слишком много ресурсов. С другой стороны ps дает большую гибкость поскольку утилита имеет множество опций и параметров. Во всяком случае теперь вы знаете как вывести список процессов linux. Если остались вопросы, спрашивайте в комментариях!

Faq пример получения списка запущенных приложений

Private Declare Function FindWindow Lib «user32» Alias «FindWindowA» (ByVal _
lpClassName As String, ByVal lpWindowName As String) As Long

hW = FindWindow(vbNullString, «about:blank — Microsoft Internet Explorer» & Chr(0))

anti_loop/vbmisc/wnd.html — Microsoft Internet Explorer. �� ��� ���-�� � ���� ����. �� ����� ���� �� � ����� � ������� FindWindow. ��� � � ��� �������.

Sub GetTaskList()
‘�������� hWnd, ������� ����� ������ � ������
‘����� ����, �� ������ �������� ������ ������
CurrWnd = GetWindow(Me.hwnd, GW_HWNDFIRST)
‘���� ������������ hWnd ����� �����, ��������� ����
Do While CurrWnd <> 0
‘�������� ����� ����� ������� �� CurrW nd
Length = GetWindowTextLength(CurrWnd)
‘�������� ��� ������ �� ������
ListItem = Space(Length + 1)
Length = GetWindowText(CurrWnd, ListItem, Length + 1)
‘���� �������� ��� ������, ������ ��������� �� � ������ ���������
If Length > 0 Then
List1.AddItem ListItem
End If
‘��������� � ��������� ������ �� ������
CurrWnd = GetWindow(CurrWnd, GW_HWNDNEXT)
DoEvents
Loop
End Sub

Private Declare Function GetWindow Lib «user32» (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetWindowText Lib «user32» Alias «GetWindowTextA» (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindowTextLength Lib «user32» Alias «GetWindowTextLengthA» (ByVal hwnd As Long) As Long

Const GW_HWNDFIRST = 0
Const GW_HWNDNEXT = 2

Private Declare Function PostMessage Lib «user32» Alias «PostMessageA» _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As _ Any) As Long

Const WM_CLOSE = &H10

>Private Sub Command1_Click()
Dim hW as Long
hW=FindWindow(vbNullString,List1.Text & Chr(0))
PostMessage hW,WM_QUIT,0,0
End Sub

Private Sub Form_Load()
GetTaskList
End Sub

Список процессов Linux

На сайте уже есть несколько статей про процессы Linux, в которых подробно описано как ими управлять или как завершить один или группу процессов, но это еще не все. Чтобы правильно управлять процессами и ориентироваться в них вам нужно научиться анализировать список процессов Linux, понимать что значит каждый пункт и зачем он нужен.

В этой статье мы подробно рассмотрим как посмотреть список процессов, разберем какими бывают процессы, почему так происходит и что с этим делать.

Что такое процесс?

Процесс Linux — это экземпляр программы, запущенный в памяти. Все процессы можно разделить на обычные и фоновые. Более подробно об этом написано в статье управление процессами Linux. Linux — это многопользовательская система, каждый пользователь может запускать одни и те же программы, и даже один пользователь может захотеть запустить несколько экземпляров одной программы, поэтому ядру нужно как-то идентифицировать такие однотипные процессы. Для этого каждому процессу присваивается PID (Proccess Identificator).

Каждый из процессов может находиться в одном из таких состояний:

  • Запуск — процесс либо уже работает, либо готов к работе и ждет, когда ему будет дано процессорное время;
  • Ожидание — процессы в этом состоянии ожидают какого-либо события или освобождения системного ресурса. Ядро делит такие процессы на два типа — те, которые ожидают освобождения аппаратных средств и приостановление с помощью сигнала;
  • Остановлено — обычно, в этом состоянии находятся процессы, которые были остановлены с помощью сигнала;
  • Зомби — это мертвые процессы, они были остановлены и больше не выполняются, но для них есть запись в таблице процессов, возможно, из-за того, что у процесса остались дочерние процессы.


А теперь давайте перейдем ближе к практике и поговорим о том, как узнать запущенные процессы linux.

Список процессов Linux

Самые популярные команды для решения этой задачи — это ps, top и htop. Последние две команды мы уже рассматривали в предыдущих статьях, собственно, они интерактивные и с ними у вас не возникнет проблем. Сейчас же хотелось бы остановиться более детально на ps. Сначала рассмотрим общий синтаксис команды, здесь все очень просто:

$ ps опции

$ ps опции | grep параметр

Во втором варианте мы используем утилиту grep для того, чтобы отобрать нужные нам процессы по определенному критерию. Теперь рассмотрим опции утилиты. Они делятся на два типа — те, которые идут с дефисом Unix и те, которые используются без дефиса — BSD. Лучше пользоваться только опциями Unix, но мы рассмотрим и одни и другие. Заметьте, что при использовании опций BSD, вывод утилиты будет организован в BSD стиле.

  • -A, (a) — выбрать все процессы;
  • -a — выбрать все процессы, кроме фоновых;
  • -d, (g) — выбрать все процессы, даже фоновые, кроме процессов сессий;
  • -N — выбрать все процессы кроме указанных;
  • — выбирать процессы по имени команды;
  • -G — выбрать процессы по ID группы;
  • -p, (p) — выбрать процессы PID;
  • —ppid — выбрать процессы по PID родительского процесса;
  • -s — выбрать процессы по ID сессии;
  • -t, (t) — выбрать процессы по tty;
  • -u, (U) — выбрать процессы пользователя.
  • — отображать информацию планировщика;
  • -f — вывести максимум доступных данных, например, количество потоков;
  • -j, (j) — вывести процессы в стиле Jobs, минимум информации;
  • -M, (Z) — добавить информацию о безопасности;
  • -o, (o) — позволяет определить свой формат вывода;
  • —sort, (k) — выполнять сортировку по указанной колонке;
  • -L, (H)— отображать потоки процессов в колонках LWP и NLWP;
  • -m, (m) — вывести потоки после процесса;
  • -V, (V) — вывести информацию о версии;
  • -H — отображать дерево процессов linux;

Теперь, когда вы знаете синтаксис и опции, можно перейти ближе к практике и посмотреть запущенные процессы в Linux. Чтобы просто посмотреть процессы в linux в текущей оболочке используйте команду без параметров:

Все процессы, кроме лидеров групп, в том же режиме отображения:

Все процессы, включая фоновые и лидеры групп:

Чтобы вывести больше информации о процессах используйте опцию -f:

При использовании опции -f команда выдает такие колонки:

  • UID — пользователь, от имени которого запущен процесс;
  • PID — идентификатор процесса;
  • PPID — идентификатор родительского процесса;
  • C — процент времени CPU, используемого процессом;
  • STIME — время запуска процесса;
  • TTY — терминал, из которого запущен процесс;
  • TIME — общее время процессора, затраченное на выполнение процессора;
  • CMD— команда запуска процессора;
  • LWP — показывает потоки процессора;
  • PRI — приоритет процесса.

Например, также можно вывести подробную информацию обо всех процессах:

Больше информации можно получить, использовав опцию -F:

Если вы хотите получить еще больше информации, используйте вместо -f опцию -l:

Дальше мы можем отобрать все процессы, запущенные от имени определенного пользователя:

С помощью опции -H можно отобразить дерево процессов:

Если вас интересует информация только об определенном процессе, то вы можете использовать опцию -p и указать pid процесса linux:

Через запятую можно указать несколько PID:

Опция позволяет фильтровать процессы по имени, например, выберем только процессы chrome:

Дальше можно использовать опцию -L чтобы отобразить информацию о процессах:

Очень интересно то, с помощью опции -o можно настроить форматирование вывода, например, вы можете вывести только pid процесса linux и команду:

Вы можете выбрать такие колонки для отображения: pcpu, pmem, args, comm, cputime, pid, gid, lwp, rss, start, user,vsize,priority. Для удобства просмотра можно отсортировать вывод программы по нужной колонке, например, просмотр процессов linux, которые используют больше всего памяти:

Или по проценту загрузки cpu:

ps -FA —sort pcpu

Еще одна опция — M, которая позволяет вывести информацию про права безопасности и флаги SELinux для процессов:

Общее количество запущенных процессов Linux можно узнать командой:

Мы рассмотрели все основные возможности утилиты ps. Дальше вы можете поэкспериментировать с ее параметрами и опциями чтобы найти нужные комбинации, также можно попытаться применить опции BSD.


Выводы

Команда ps может быть очень полезной если система перегружена и вам необходимо срочно узнать запущенные процессы linux чтобы освободить память или ресурсы процессора. Интерактивные средства не всегда могут помочь, потому что они потребляют слишком много ресурсов. С другой стороны ps дает большую гибкость поскольку утилита имеет множество опций и параметров. Во всяком случае теперь вы знаете как вывести список процессов linux. Если остались вопросы, спрашивайте в комментариях!

Как получить список запущенных приложений?

November 2020

20.4k раз

Я работаю над приложением, которое нуждается в информации о приложениях, работающих в системе до сих пор. Есть ли API / метод для получения такого рода информации?

3 ответы

Вы можете получить информацию о запущенных процессах с использованием ActivityManager класса.

Вы не можете обнаружить запуск приложения в Android, но вы можете получить список открытых в данный момент приложений и проверить , если приложение , которое вы ищете, открыто или нет , используя следующий код:

Вы также можете проверить, если приложение работает на переднем плане, используя этот метод

Плагины в Andro > 12.04.2020 / 08:54 от aNNiMON

В Android есть неплохой набор средств для взаимодействия между приложениями, от вызова стороннего Activity до получения ресурсов из других приложений. Пользуясь этими средствами, можно значительно расширить функционал своих приложений или игр дополнительным контентом.

Получение списка существующих приложений
Основным классом для работы со списком приложений является PackageManager , с ним и будем работать.

Для получения информации о другом приложении, нужно знать имя его пакета (например com.example.app ). Если планируется создание конкретного плагина, то можно просто прописать название пакета прямо в коде, но если необходимо вызывать разные плагины, то придётся получать список установленных плагинов и затем вызывать необходимый.

Чтобы понять, какое из приложений является плагином, можно пометить его собственной категорией в манифесте, например:

Как получить список запущенных приложений с помощью командной строки?

Я хочу перечислить только запущенное приложение, например: Firefox, gedit, Nautilus и т. д., используя командную строку.

Примечание. Я не хочу перечислять все запущенные процессы, только запущенные приложения (скажем, вручную запущенные графические интерфейсы).

3 ответа

Комбинация wmctrl и xprop предлагает множество возможностей.

Пример 1:

В этом случае вывод может выглядеть аналогично:

Пример 2:

Вы можете добавить функцию в свой

/.bashrc или запустить ее из файла сценария.

Введение

Мощность xdotool и wmctrl появляется, когда вам нужно выполнять манипуляции в окнах, например, перемещение или изменение размера. Тем не менее, я твердо верю, что для целей перечисления запущенных программ и информации о них xprop и qdbus являются двумя достаточными инструментами и установкой xdotool и wmctrl , если только пользователь не хочет те, для дополнительной функциональности — это бесцельная задача. В этом ответе я хотел бы представить два решения для скриптов с xprop и qdbus .

Обратите внимание, что я ни в коем случае не против xdotool или wmctrl . Я сам использовал их сам, но я нахожу их более мощными в сочетании с другими инструментами. Вот лишь несколько примеров, где я их использовал:

Xprop

В сценарии ниже используется только xprop, чтобы извлечь список активных окон, отфильтровать только истинные окна (не тип док-станции в качестве Unity Launcher или Unity Panel) и отобразить их информацию:

QDBus

Нижеприведенный ниже код выполняет, по сути, одну и ту же задачу, однако сначала отфильтровывает приложения, затем отображает его дочерние окна и, наконец, предоставляет информацию о них.

Немного более простая команда, но для фильтрации результатов используется интерфейс dbus окна Unity. Вот, по существу, функция у меня есть в моем .mkshrc

Илон Маск рекомендует:  Php руководство по рнр 3 0 функции msql
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL