我试图通过以下方式检查用户从我创建的服务中查看当前正在/正在使用的应用程序或活动:
ActivityManager am = (ActivityManager) getApplicationContext().getSystemService(
Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> processList = am.getRunningAppProcesses();
String cProcess = processList.get(0).processName;
但这有时会显示com.android.systemui或com.android.buetooth等服务,即使其他活动位于前台也是如此。
我想这是检查服务而不是活动..有没有更好的更可靠的方式来查看当前哪个应用程序在前台?
答案 0 :(得分:2)
我认为activityManager.getRunningTasks()
更符合您的需求,但请注意Android开发人员警告不要将ActivityManager
用于您应用的任何核心功能。
答案 1 :(得分:0)
尝试检查流程的重要性:
List<RunningAppProcessInfo> appProcesses= null;
appProcesses = activityManager.getRunningAppProcesses();
if (appProcesses!=null) {
for (RunningAppProcessInfo appProcess : appProcesses) {
if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
// Log.d("MYTAG",appProcess.processName+":"+appProcess.importance+" is foreground");
}
}
}
答案 2 :(得分:0)
这就像一个魅力..感谢JRaymond:
ActivityManager am = (ActivityManager) getApplicationContext().getSystemService(
Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> processList = am.getRunningTasks(3);
String cProcess = processList.get(0).baseActivity.getPackageName();