首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从后台任务或服务确定当前前台应用

从后台任务或服务确定当前前台应用
EN

Stack Overflow用户
提问于 2010-01-30 13:24:05
回答 14查看 110.2K关注 0票数 115

我希望有一个在后台运行的应用程序,它知道何时任何内置的应用程序(消息,联系人等)正在运行。

所以我的问题是:

我应该如何在background.

  • How中运行我的应用程序后台应用程序可以知道当前在前台运行的应用程序是什么。

有经验的人会非常感谢你的回复。

EN

Stack Overflow用户

发布于 2017-08-10 01:16:29

我将两个解决方案组合在一个方法中,它适用于我的API 24和API 21。其他的我没有测试过。

Kotlin中的代码:

代码语言:javascript
运行
复制
private fun isAppInForeground(context: Context): Boolean {
    val appProcessInfo = ActivityManager.RunningAppProcessInfo()
    ActivityManager.getMyMemoryState(appProcessInfo)
    if (appProcessInfo.importance == IMPORTANCE_FOREGROUND ||
            appProcessInfo.importance == IMPORTANCE_VISIBLE) {
        return true
    } else if (appProcessInfo.importance == IMPORTANCE_TOP_SLEEPING ||
            appProcessInfo.importance == IMPORTANCE_BACKGROUND) {
        return false
    }

    val am = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
    val foregroundTaskInfo = am.getRunningTasks(1)[0]
    val foregroundTaskPackageName = foregroundTaskInfo.topActivity.packageName
    return foregroundTaskPackageName.toLowerCase() == context.packageName.toLowerCase()
}

在Manifest中

代码语言:javascript
运行
复制
<!-- Check whether app in background or foreground -->
<uses-permission android:name="android.permission.GET_TASKS" />
票数 0
EN
查看全部 14 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2166961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档