Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测当前前景android应用程序_Android_Android Activitymanager - Fatal编程技术网

检测当前前景android应用程序

检测当前前景android应用程序,android,android-activitymanager,Android,Android Activitymanager,我想写一个android服务,每5秒检查一次当前正在运行的前台应用程序,例如,如果用户当前正在使用Chrome,它应该给我Chrome作为正在运行的应用程序。当用户切换到谷歌地图时,它应该在5秒钟后告诉我谷歌地图 我尝试使用以下代码来获取当前的前台应用程序 ActivityManager.RunningTaskInfo foregroundTaskInfo = mActivityManager.getRunningTasks(1).get(0); String foregroundTaskPac

我想写一个android服务,每5秒检查一次当前正在运行的前台应用程序,例如,如果用户当前正在使用Chrome,它应该给我Chrome作为正在运行的应用程序。当用户切换到谷歌地图时,它应该在5秒钟后告诉我谷歌地图

我尝试使用以下代码来获取当前的前台应用程序

ActivityManager.RunningTaskInfo foregroundTaskInfo = mActivityManager.getRunningTasks(1).get(0);
String foregroundTaskPackageName = foregroundTaskInfo.topActivity.getPackageName();

当拥有我的服务的应用程序位于前台时,代码运行良好,它返回我的应用程序的包名,但当我切换到另一个应用程序时,它会给我“com.sec.android.app.launcher”

此方法在android 5中不推荐使用,因此,出于安全原因,如果您的应用程序位于前台,此方法将返回您的程序包名称,但不会返回其他应用程序。由于您使用的是Android6,我猜这个方法总是返回启动器包名称来隐藏实际的前台应用程序

发件人:

列出getRunningTasks(int maxNum)
此方法在API级别21中被弃用。 从棒棒糖开始,这种方法不再适用于第三方应用程序:以文档为中心的recents的引入意味着它可以向调用者泄露个人信息。为了向后兼容,它仍将返回其数据的一小部分:至少是调用方自己的任务,可能还有一些其他任务,例如已知不敏感的home


您是否申请了GET_TASKS权限?@MarcEstrada,是的,我已经在清单文件中添加了GET_TASKS权限您使用的是哪个设备和Android版本?我使用的是运行Android 6.0.1的三星S5,我已经回答了,因为更容易阅读引用的文本
List<ActivityManager.RunningTaskInfo> getRunningTasks (int maxNum)