Определение имени приложения переднего плана в Android - PullRequest
0 голосов
/ 29 августа 2018

Я хочу узнать имя приложения переднего плана, используя мой сервис.

Я уже использовал приведенный ниже код, но они дают только имя моего приложения или дом. но не могу получить имя при открытии мессенджера facebook или других приложений.

вот код, который я использую в своем сервисе.

            ActivityManager.RunningAppProcessInfo result=null, info=null;

                ActivityManager activityManager = (ActivityManager) Verifying_Service.this.getSystemService( Context.ACTIVITY_SERVICE );
                PackageManager pm1 = Verifying_Service.this.getPackageManager();
                List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
                for(ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
                    if(appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
                        CharSequence c = null;
                        try {
                            c = pm1.getApplicationLabel(pm1.getApplicationInfo(appProcess.processName, PackageManager.GET_META_DATA));
                        } catch (PackageManager.NameNotFoundException e) {
                            e.printStackTrace();
                        }
                        Toast.makeText(Verifying_Service.this, appProcess.processName, Toast.LENGTH_SHORT).show();
//Log.i("Foreground App", "package: " + appProcess.processName + " App: " + c.toString());
                    }
                }

и я тоже попробовал этот

   ActivityManager am = (ActivityManager) Verifying_Service.this.getSystemService(ACTIVITY_SERVICE);

// The first in the list of RunningTasks is always the foreground task.
                ActivityManager.RunningTaskInfo foregroundTaskInfo = am.getRunningTasks(5).get(0);

                String foregroundTaskPackageName = foregroundTaskInfo .topActivity.getPackageName();
                PackageManager pm = Verifying_Service.this.getPackageManager();
                PackageInfo foregroundAppPackageInfo = null;
                try {
                    foregroundAppPackageInfo = pm.getPackageInfo(foregroundTaskPackageName, 0);
                } catch (PackageManager.NameNotFoundException e) {
                    e.printStackTrace();
                }
                String foregroundTaskAppName = foregroundAppPackageInfo.applicationInfo.loadLabel(pm).toString();

                Toast.makeText(Verifying_Service.this, foregroundTaskAppName, Toast.LENGTH_SHORT).show();

Спасибо заранее. В настоящее время я использую версию зефира для Android.

...