Android 5.0+ getRunningTasks устарела

Я прошел этот вопрос и этот вопрос. Но с помощью этой библиотеки я теперь могу получить список приоритетных задач, используя следующий код.

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { //For versions less than lollipop
            ActivityManager am = ((ActivityManager) getSystemService(ACTIVITY_SERVICE));
            List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(5);
            top = taskInfo.get(0).topActivity.getPackageName();
            Log.v(TAG, "top app = " + top);
        }else{ //For versions Lollipop and above
            List<AndroidAppProcess> processes = ProcessManager.getRunningForegroundApps(getApplicationContext());
            Collections.sort(processes, new ProcessManager.ProcessComparator());
            for (AndroidAppProcess process : processes) {
                if (process.foreground) {
                    top =process.name;
                    Log.v(TAG,top);
                }
            }
        }

Здесь, для Android 5.0+, я запускаю весь процесс переднего плана, но я не могу определить, какое приложение является лучшим приложением.

Выход для вышеуказанного кода (для условия else)

com.android.vending
com.google.android.gms
com.google.android.googlequicksearchbox
com.google.android.videos
com.test1
com.naag.testing
com.example.android.gettask

Здесь мое лучшее приложение com.google.android.videos

Теперь, как решить com.google.android.videos это верхнее приложение из приведенного выше списка программно?

Как приложение applocker (или похожее на applocker) работает на 5.0+? Надеюсь, кто-то поможет, который будет полезен для кого-то.

2 ответа

Решение

Итак, вот обновление. Протестировано в 5.0 и 5.1.1 устройстве. Работает отлично.

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { //For versions less than lollipop
            ActivityManager am = ((ActivityManager) getSystemService(ACTIVITY_SERVICE));
            List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(5);
            top = taskInfo.get(0).topActivity.getPackageName();
            Log.v(TAG, "top app = " + top);
        }else{ //For versions Lollipop and above
            List<AndroidAppProcess> processes = ProcessManager.getRunningForegroundApps(getApplicationContext());
            Collections.sort(processes, new ProcessManager.ProcessComparator());
            for (int i = 0; i <=processes.size()-1 ; i++) {
                if(processes.get(i).name.equalsIgnoreCase("com.google.android.gms")) { //always the package name above/below this package is the top app
                    if ((i+1)<=processes.size()-1) { //If processes.get(i+1) available, then that app is the top app
                        top = processes.get(i + 1).name;
                    } else if (i!=0) { //If the last package name is "com.google.android.gms" then the package name above this is the top app
                        top = processes.get(i - 1).name;
                    } else{
                        if (i == processes.size()-1) { //If only one package name available
                            top = processes.get(i).name;
                        }
                    }
                    Log.v(TAG, "top app = " + top);
                }
            }
        }

Благодаря этой библиотеке

Теперь я могу получить переднюю задачу в Android 5.0+

Функция "приложения с доступом" иногда может удовлетворить ваши потребности

Другие вопросы по тегам