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+
Функция "приложения с доступом" иногда может удовлетворить ваши потребности