Android

How to find the currently running applications programmatically in Android?

Как программно найти запущенные в данный момент приложения в Android?

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

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

Пример: если пользователь запускает приложение браузера, мое приложение должно распечатать информацию о приложении браузера в журнале.

Как я могу это сделать?

Переведено автоматически
Ответ 1
ActivityManager activity_manager = (ActivityManager) context
.getSystemService(Activity.ACTIVITY_SERVICE);

ActivityManager имеет методgetRunningTasks(int). ActivityManager похоже, это решение, которое вы ищете.

final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
final List<RunningTaskInfo> recentTasks = activityManager.getRunningTasks(Integer.MAX_VALUE);

for (int i = 0; i < recentTasks.size(); i++)
{
Log.d("Executed app", "Application executed : " +recentTasks.get(i).baseActivity.toShortString()+ "\t\t ID: "+recentTasks.get(i).id+"");
}

Кроме того, взгляните на следующий поток:
Посмотреть последнюю задачу Android, выполненную пользователем

Ответ 2

Вы можете использовать что-то похожее на это:

ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = activityManager.getRunningTasks(Integer.MAX_VALUE);

for (int i = 0; i < tasks.size(); i++) {
Log.d("Running task", "Running task: " + tasks.get(i).baseActivity.toShortString() + "\t\t ID: " + tasks.get(i).id);
}
Ответ 3

Этот код предоставит текущий журнал активности.

Process logcatProc;
List <String> progs = new ArrayList <String>();

progs.add("logcat");
progs.add("-v");
progs.add(mFormat.getValue());
if (mBuffer != Buffer.MAIN) {
progs.add("-b");
progs.add(mBuffer.getValue());
}
progs.add("*:" + mLevel);

logcatProc = Runtime.getRuntime()
.exec(progs.toArray(new String[0]));

mReader = new BufferedReader(new InputStreamReader(
logcatProc.getInputStream()), 1024);

String line;
while (mRunning && (line = mReader.readLine()) != null) {
if (!mRunning) {
break;
}
if (line.length() == 0) {
continue;
}
if (mIsFilterPattern) {
if (mFilterPattern != null && !mFilterPattern.matcher(line).find()) {
continue;
}
} else {
if (mFilter != null && !line.toLowerCase().contains(mFilter.toLowerCase())) {
continue;
}
}
synchronized (mLogCache) {
mLogCache.add(line);
}
}
Ответ 4

ActivityManager.getRunningTasks(int) устарело с API 21 по соображениям безопасности. Вы можете использовать ActivityManager.RunningTaskInfo(), чтобы, по крайней мере, получить информацию о задаче для текущей задачи, в которой выполняется это действие (хотя некоторые поля RunningTaskInfo(), но не весь метод, устарели в API 29).

Смотрите Документы Google для получения дополнительной информации о запуске TaskInfo().

java android