Można wyróżnić aplikacji poprzez odpytywanie na górę działalności:
private String lastPackageName;
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
// get the info from the currently running task
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
Log.d("topActivity", "CURRENT Activity ::"
+ taskInfo.get(0).topActivity.getClassName());
ComponentName componentInfo = taskInfo.get(0).topActivity;
String packageName = componentInfo.getPackageName();
if(lastPackageName != packageName){
//Probably application changed
}
lastPackageName = packageName;
Ale to będzie do ciebie, jak często można sondować do tych informacji .. można spróbować odpytywanie tej informacji każdy użytkownik naciska czas z powrotem , przyciski do domu lub prasy na ekranie. Ale oczywiście będzie to za dużo i zła technika wyborcza.
Wygląda na to pytanie zwrócono się już wcześniej i nie dostał żadnej wystarczającą odpowiedź: How to be notified when foreground (top) activity (application) changes
Źródło: https://stackoverflow.com/a/4753333/1276374
należy otworzyć to pytanie dla Bounty. Moja odpowiedź wyraźnie nie jest odpowiedzią wartą akceptacji, jestem też ciekawa możliwych rozwiązań. –