在Android上运行的应用程序列表?

o7jaxewo  于 2023-04-10  发布在  Android
关注(0)|答案(2)|浏览(161)

这是我的第一个StackOverflow-Post,所以告诉我,如果我做错了什么:)我目前正试图创建一个“AppLock-Like”应用程序,所以我不知何故需要我的应用程序知道其他应用程序已被打开或应用程序正在运行。
我已经研究了一整天了,想弄明白,怎么弄到名单(包名)的所有当前运行的应用程序在Android上。唯一的方法似乎是depricated getRunningAppProcesses()从ActivityManager类。但由于它的depricated,它只返回我自己的应用程序,即使作为后台服务运行时,而其他应用程序正在打开。而且新的UsageStatsManager似乎只给予了长期的信息。
甚至还有一种方法可以访问这些信息?有很多的应用程序在PlayStore中,不知何故能够识别何时以及什么应用程序被打开.任何帮助都是欢迎的,已经谢谢:)
我已经尝试了很多代码,这是我最后一次尝试:

public static boolean isRunningAppBanned(Context context) {
    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();

    //Print all running Apps
    for (int i = 0; i < runningAppProcessInfo.size(); i++) {
        Log.println(Log.INFO, "Running Apps", runningAppProcessInfo.get(i).processName);
    }
    
    //Check if a running App is Banned
    for (int i = 0; i < runningAppProcessInfo.size(); i++) {
        if(Database.isBanned(runningAppProcessInfo.get(i).processName)) {
            Log.println(Log.ERROR, "Banned Apps", runningAppProcessInfo.get(i).processName + "IS BANNED");
            return true;
        }
    }
    return false;
}
shyt4zoc

shyt4zoc1#

您可以使用ActivityManager类获取有关正在运行的进程的信息。

okxuctiv

okxuctiv2#

就在我的情况下,我得到了安装在我的手机上的应用程序列表,就像下面的代码行的方式。

public static boolean isRunningAppBanned(Context context) {
    PackageManager pm = context.getPackageManager();
    List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);

    //Print all running Apps
    for (ApplicationInfo packageInfo : packages) {
        Log.println(Log.INFO, "Running Apps", 
        pm.getApplicationLabel(packageInfo).toString() + "\t" + packageInfo.packageName;
    }
    
    return false;
}

我希望得到在安卓设备上运行的应用程序的列表对你有帮助。- )

相关问题