Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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
Java Android:活动与另一个应用程序重叠_Java_Android_Android Service_Android Broadcastreceiver_Android Intentservice - Fatal编程技术网

Java Android:活动与另一个应用程序重叠

Java Android:活动与另一个应用程序重叠,java,android,android-service,android-broadcastreceiver,android-intentservice,Java,Android,Android Service,Android Broadcastreceiver,Android Intentservice,我需要一些帮助来指导我的项目,我需要我的应用程序识别其他应用程序何时启动,然后我的活动显示出来。 我研究了服务、意向服务和广播接收器。但我还不知道如何实现我的想法。 你们能给我推荐一些帖子、书籍和教程吗 附言:我熟悉Java和Kotlin,听起来有点不道德。然而,你可以做到 首先编写将持续运行的服务。然后确定检查应用程序是否正在运行的频率。您需要在清单中具有“获取任务”权限。然后定期检查正在运行的包,如: public static boolean isAppRunning(final Cont

我需要一些帮助来指导我的项目,我需要我的应用程序识别其他应用程序何时启动,然后我的活动显示出来。 我研究了服务、意向服务和广播接收器。但我还不知道如何实现我的想法。 你们能给我推荐一些帖子、书籍和教程吗


附言:我熟悉Java和Kotlin,听起来有点不道德。然而,你可以做到

首先编写将持续运行的服务。然后确定检查应用程序是否正在运行的频率。您需要在清单中具有“获取任务”权限。然后定期检查正在运行的包,如:

public static boolean isAppRunning(final Context context, final String packageName) {
        final ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        final List<ActivityManager.RunningAppProcessInfo> procInfos = activityManager.getRunningAppProcesses();
        if (procInfos != null)
        {
            for (final ActivityManager.RunningAppProcessInfo processInfo : procInfos) {
                if (processInfo.processName.equals(packageName)) {
                    return true;
                }
            }
        }
        return false;
    }
publicstaticbooleaninsapprunning(最终上下文,最终字符串packageName){
最终ActivityManager ActivityManager=(ActivityManager)context.getSystemService(context.ACTIVITY_服务);
最终列表procInfos=activityManager.getRunningAppProcesses();
if(procInfos!=null)
{
对于(最终ActivityManager.RunningAppProcessInfo processInfo:procInfos){
if(processInfo.processName.equals(packageName)){
返回true;
}
}
}
返回false;
}
然后,使用您关心的包定期从您的服务调用此方法。如果您看到它正在运行,那么只需创建一个intent,并在intent中添加标志\u ACTIVITY\u NEW\u TASK,以确保它启动您选择的活动

另一种选择是读取日志cat日志,并不断扫描它以查找应用程序启动。无论哪种方式,它都可能不会是即时的,除非您总是在运行,这可能会消耗大量电池,并最终警告用户最有可能的电池使用情况


无论如何,这就是你如何做的,不管是好是坏,这都会起作用。lol。

这是一款帮助学生在学习时保持专注的应用程序。多谢各位