2012-06-28 2 views
2

Как я могу получить текущее запущенное приложение?Получение текущего запуска приложения

Я хочу проверить, работает ли приложение или нет. Для этого я использовал следующий код.

 ActivityManager activityManager = 
     (ActivityManager) 
     this.getSystemService(ACTIVITY_SERVICE); 

    PackageManager pm =getPackageManager(); 
    procInfos = activityManager.getRunningAppProcesses(); 

Но он возвращает мне список из нескольких приложений, даже если я нажал кнопку «Назад» на своем главном экране. Список запущенных приложений по-прежнему показывает их в списке. Но я хочу, чтобы этот список показывал только приложения на переднем плане.

Итак, как отличить фоновые приложения от переднего плана и фона?

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

+1

Ну, одна вещь, которую я могу вам сказать, что нажатие обратно главный экран приложения вызывает 'onStop', * not *' onDestroy', поэтому они все еще появляются. [Эта ссылка] (http://stackoverflow.com/questions/2166961/determining-the-current-foreground-application-from-a-background-task-or-service) также может помочь. – Mxyk

+0

Возможно, вас заинтересует следующее: [http://stackoverflow.com/questions/2314969/how-to-determine-if-one-of-my-activities-is-in-the-foreground](http:// stackoverflow.com/questions/2314969/how-to-determine-if-one-of-my-activities-is-in-the-foreground) – ekholm

ответ

6

Вы можете попробовать этот код он дает пакет текущего активного экрана:

ActivityManager am = (ActivityManager) this 
       .getSystemService(ACTIVITY_SERVICE); 

// get the info from the currently running task 
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); 

ComponentName componentInfo = taskInfo.get(0).topActivity; 
if(!componentInfo.getPackageName().equals("your.package.name")) 
{ 
    //Do your stuff 
} 

Вам может понадобиться разрешение

<uses-permission android:name="android.permission.GET_TASKS" /> 
+3

'ActivityManager # getRunningTasks()' устарел в API 21 и ** doesn 't даже вернуть правильный результат больше ** (функциональность ограничена по соображениям безопасности). –

Смежные вопросы