Как найти запущенные приложения программно в Android? - PullRequest
15 голосов
/ 11 ноября 2011

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

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

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

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

Ответы [ 3 ]

21 голосов
/ 11 ноября 2011
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, выполненное пользователем

8 голосов
/ 11 ноября 2011

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

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);
}
0 голосов
/ 09 октября 2013

Этот код предоставит текущую активность logcat

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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...