現在フォアグラウンドにあるプロセスを理解するために、次のコードを使用しています。
ActivityManager activityManager = (ActivityManager) newContext.getSystemService( Context.ACTIVITY_SERVICE );
List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
for(RunningAppProcessInfo appProcess : appProcesses){
if(appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND){
Log.i("Foreground App", appProcess.processName);
[...]
}
}
ただし、ストック ランチャー、apex、nova ランチャーなどの 4.0.4 ランチャーを使用している場合にのみ機能します。GoLauncher または Launcher Pro に切り替えると、ログに記録されません。それらがフォアグラウンドになることはないようです (または、コードのこの部分がそれらを検出できません)。