У меня есть служба, работающая на Android, и мне нужно знать, есть ли какое-либо приложение в фокусе или если «рабочий стол» (главный экран) находится в фокусе. Я не знаю, подходит ли это для обозначения основного экрана телефона. Как я могу узнать, находится ли это в фокусе или какое-то другое приложение?android: как узнать, находится ли главный экран в фокусе?
Внутри службы у меня есть этот код, чтобы получить запущенные сервисы:
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
// get the info from the currently running task
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
ComponentName componentInfo = taskInfo.get(0).topActivity;
Как я могу знать из componentInfo если это настольный компьютер или нет? На эмуляторе componentInfo.getPackageName() возвращает com.android.launcher, но в галактике s1 (я тестировал только в этом телефоне) возвращает что-то еще.
Есть ли другой способ сделать это?
Спасибо.
«Мне нужно знать, если это любое приложение на фокус или если "рабочий стол" (главный экран) находится в фокусе »- почему? – CommonsWare
Мое впечатление, что вы не можете * надежно определить это. И поймите, что замена экрана для домашнего экрана также относится к категории приложений. –
это менее важно. в нескольких словах я создаю приложение, которое помогает родителям защищать свой телефон, если ребенок в возрасте 2-4 лет хочет играть по телефону. И для этого приложения мне нужно что-то сделать, когда малыш идет на рабочий стол. –