Android:活动重叠另一个应用

时间:2017-10-05 02:30:52

标签: java android android-service android-broadcastreceiver android-intentservice

我需要一些帮助来指导我的项目,我需要我的应用程序识别何时另一个应用程序启动然后我的活动出现。 我研究了服务,intentservice和broadcastreceiver。但我还不知道如何执行我的想法。 你们能推荐我一些帖子,书籍,教程吗?

P.S。:我熟悉Java和Kotlin

1 个答案:

答案 0 :(得分:0)

嗯听起来有点不道德。但是,你可以这样做。

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

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;
    }

然后,只需使用您关注的包定期从您的服务中调用此方法。如果您看到它正在运行,那么只需创建一个intent并将FLAG_ACTIVITY_NEW_TASK置于意图中,以确保它启动您选择的活动。

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

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