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

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

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

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

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

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, выполненную пользователем

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

 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); } 

Этот код обеспечит текущий logcat acitvity

 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); } }