如何获取在前台服务屏幕上显示的应用程序包名称,android?

how to get package name of application being displayed on screen in a foreground service, android?

我想获取当时显示在屏幕上的应用程序包名称。我使用的是前台服务,我使用了下面的方法,但是如果我打开任何应用程序(例如 youtube、camer 等),那只会给我当前应用程序的包名,如果我在主屏幕上,则给我手机的 com.huawie.android.launcher。

  ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
            ActivityManager.RunningTaskInfo foregroundTaskInfo = activityManager.getRunningTasks(1).get(0);
            packag= foregroundTaskInfo.topActivity.getPackageName();
            Log.i("pack",packag);

好吧,在API-21级或loolipop以下,你可以用activity class获得整个包裹,但是从API-22你不能'由于某些安全原因,无法使用 activity 获取整个应用程序包。

如您所知,Android 不会成为安全的 phone,所以这就是 activity 名称受到限制的原因。