gpt4 book ai didi

java - 如何获取前台应用程序和/或 Activity ?

转载 作者:行者123 更新时间:2023-11-30 10:03:02 28 4
gpt4 key购买 nike

我正在开发用于集成 Android TV 设备和 Smartthings Hub 的 Remote 。我希望能够看到哪个应用处于 Activity 状态(前景,显示给用户)。

我的应用是软键盘,因此它作为服务运行(输入法服务)

我找到了下面的代码并试了一下:

ActivityManager.RunningAppProcessInfo result=null;
String pname="process: ";
ActivityManager activityManager = (ActivityManager) ctx.getSystemService( Context.ACTIVITY_SERVICE );
List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();

Iterator <ActivityManager.RunningAppProcessInfo> i = appProcesses.iterator();

while(i.hasNext()){
ActivityManager.RunningAppProcessInfo info = i.next();
Log.d("LOG : " , info.processName);

if(info.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND)
{
result=info;
break;
}
}

但它不显示任何应用程序。如果我删除条件

"info.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND"

然后它将我的应用程序(键盘)显示为正在运行的应用程序。

所以这似乎只显示属于我的应用程序一部分的应用程序或 Activity 。我怎样才能获得整个 Android 系统的这些信息?是否需要许可?

如果普通应用程序无法做到这一点,并且只能通过一些额外的权限或辅助功能来实现,我愿意使用它,因为该应用程序不是商业应用程序,如果有任何其他 Smartthings 则不会分发用户不要求它。我只是不能使用 Root设备。除此之外,我可以尝试任何东西。

最佳答案

试试这个:

public static boolean isAppStatus(Context context) {
boolean isAppStatus = true;
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) {
List<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) {
if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
for (String activeProcess : processInfo.pkgList) {
if (activeProcess.equals(context.getPackageName())) {
isAppStatus = false;
}
}
}
}
} else {
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
ComponentName componentInfo = taskInfo.get(0).topActivity;
if (componentInfo.getPackageName().equals(context.getPackageName())) {
isAppStatus = false;
}
}
return isAppStatus;
}

关于java - 如何获取前台应用程序和/或 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56404933/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com