Android:Activity 与另一个应用重叠
Android: Activity overlap another app
我需要一些帮助来指导我的项目,我需要我的应用程序识别何时启动另一个应用程序然后我的 activity 出现。
我研究了 service、intentservice 和 broadcastreceiver。但我还不知道如何执行我的想法。
你们能给我推荐一些帖子、书籍、教程吗?
P.S.: 我熟悉 Java 和 Kotlin
嗯听起来有点不道德。但是,你可以做到。
首先编写您的服务,该服务将 运行 持续。然后确定您检查应用程序是否 运行ning 的频率。您需要清单中的 GET TASKS 权限。然后定期检查 运行ning 软件包,例如:
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;
}
然后只需使用您关心的包从您的服务中定期调用此方法。如果您看到它 运行ning 那么只需创建一个意图并将 FLAG_ACTIVITY_NEW_TASK 放入意图中以确保它启动您选择的 activity。
另一种方法是读取 log cat 日志并不断扫描它以查找正在启动的应用程序。无论哪种方式,它都可能不是即时的,除非你总是 运行ning,这可能会消耗大量电池并最终最有可能警告用户电池使用情况。
好歹就是这样,不管是好是坏,都行哈哈。
我需要一些帮助来指导我的项目,我需要我的应用程序识别何时启动另一个应用程序然后我的 activity 出现。 我研究了 service、intentservice 和 broadcastreceiver。但我还不知道如何执行我的想法。 你们能给我推荐一些帖子、书籍、教程吗?
P.S.: 我熟悉 Java 和 Kotlin
嗯听起来有点不道德。但是,你可以做到。
首先编写您的服务,该服务将 运行 持续。然后确定您检查应用程序是否 运行ning 的频率。您需要清单中的 GET TASKS 权限。然后定期检查 运行ning 软件包,例如:
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;
}
然后只需使用您关心的包从您的服务中定期调用此方法。如果您看到它 运行ning 那么只需创建一个意图并将 FLAG_ACTIVITY_NEW_TASK 放入意图中以确保它启动您选择的 activity。
另一种方法是读取 log cat 日志并不断扫描它以查找正在启动的应用程序。无论哪种方式,它都可能不是即时的,除非你总是 运行ning,这可能会消耗大量电池并最终最有可能警告用户电池使用情况。
好歹就是这样,不管是好是坏,都行哈哈。