Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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_Service_Background_Foreground - Fatal编程技术网

Android:如何知道什么应用程序被打开到前台,并在它进入后台时做些什么

Android:如何知道什么应用程序被打开到前台,并在它进入后台时做些什么,android,service,background,foreground,Android,Service,Background,Foreground,标题不好,对不起。简而言之,我想知道怎么说 所以,我正在为Android开发一个应用程序,它将只在我自己的两个平板电脑中使用,这些平板电脑将被公开使用 我需要一个在后台运行的服务(或者我现在认为,如果可能的话,请证明我错了),该服务跟踪哪个应用程序是前台,当该应用程序进入后台时,该服务将启动活动,该活动将进入前台并向用户显示某些内容(例如,一些广告,或一些要求开始评分的审查窗口) 这怎么可能呢 多谢各位 E:其他应用程序可以是第三方的,所以我不能修改它们的代码。当您启动其他活动时,您当前的活动处

标题不好,对不起。简而言之,我想知道怎么说

所以,我正在为Android开发一个应用程序,它将只在我自己的两个平板电脑中使用,这些平板电脑将被公开使用

我需要一个在后台运行的服务(或者我现在认为,如果可能的话,请证明我错了),该服务跟踪哪个应用程序是前台,当该应用程序进入后台时,该服务将启动活动,该活动将进入前台并向用户显示某些内容(例如,一些广告,或一些要求开始评分的审查窗口)

这怎么可能呢

多谢各位


E:其他应用程序可以是第三方的,所以我不能修改它们的代码。

当您启动其他活动时,您当前的活动处于OnPause()状态,而其他活动处于onCreate()状态


您必须参考此信息。

您必须使用辅助功能服务。从Android Lollipop开始,您无法收集此类信息。唯一的方法是通过辅助功能。

要检查其他正在运行的任务,您应该使用ActivityManager

   ActivityManager acm = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    List<RunningTaskInfo> Ru_tasks = acm.getRunningTasks(NUMBER_OF_TASKS_U_WANT);
    if (!Ru_tasks .isEmpty()) {
        LOOP FOR EACH TASK (i is counter)
        ComponentName topActivity = tasks.get(i).topActivity; // Or replace .topactivity with task name
        if (topActivity.getPackageName().equals(WHAT_YOU LOOK FOR)) {
                  //Do WHAT YOU WANT!
        }
    }
ActivityManager acm=(ActivityManager)context.getSystemService(context.ACTIVITY_服务);
List Ru_tasks=acm.getRunningTasks(需要的任务数);
如果(!Ru_tasks.isEmpty()){
每个任务的循环(i是计数器)
ComponentName topActivity=tasks.get(i).topActivity;//或用任务名替换.topActivity
if(topActivity.getPackageName().equals(您要查找的内容)){
//做你想做的!
}
}

获取任务权限

我发现:"此方法在API级别21中被弃用。从LOLLIPOP开始,此方法不再适用于第三方应用程序:引入以文档为中心的recents意味着它可以向调用者泄漏个人信息。为了向后兼容,它仍将返回其数据的一小部分:至少是调用者自己的任务,可能还有一些任务其他任务,如家庭,是众所周知的不敏感。“因此,这不再是一个很好的选择。我可以保持平板电脑在4.4,但有一天我可能希望5.0更好,如果你提供链接,而不是官方文件来实现这一点。”