Как проверить в коде, находится ли главный экран в фокусе в Android (на всех устройствах)?

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

  List  runningtasks = actvityManager.getRunningTasks (1);  Намерение намерения = новое намерение (Intent.ACTION_MAIN);  intent.addCategory (Intent.CATEGORY_HOME);  Список  resolveInfoList = getPackageManager (). QueryIntentActivities (намерение, PackageManager.MATCH_DEFAULT_ONLY);  String topmostapp = runningtasks.get (0) .topActivity.getPackageName ();  

Это отлично работает с устройствами ниже версии Lollipop.

Для Lollipop , Я пытаюсь использовать следующий код:

  для (RunningAppProcessInfo appProcess: appProcesses) {if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {if ((appProcess.processName  .contains ("launcher"))) {//Устанавливает условие.  }  

Проблема в коде заключается в том, что он отлично работает, только когда в пакете домашнего экрана есть слово «пусковая установка», такое как устройство Samasung. Но на таких устройствах, как Moto G, имя пакета другое («com.google.android.googlequicksearchbox»).

Итак, я хотел бы знать, есть ли какой-либо общий код для определения того, главный экран находится в фокусе независимо от устройств?

Заранее спасибо.


2

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

  if (Build.VERSION.SDK_INT> = Build.VERSION_CODES.LOLLIPOP) {PackageManager localPackageManager = getPackageManager ();  Intent checkHomeInLollipopIntent = новое намерение (Intent.ACTION_MAIN);  checkHomeInLollipopIntent.addCategory (Intent.CATEGORY_HOME);  Строка str = localPackageManager.resolveActivity (checkHomeInLollipopIntent, PackageManager.MATCH_DEFAULT_ONLY) .activityInfo.packageName;  ActivityManager activityManager = (ActivityManager) этот .getSystemService (Context.ACTIVITY_SERVICE);  Список  appProcesses = activityManager .getRunningAppProcesses ();  for (RunningAppProcessInfo appProcess: appProcesses) {if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {if ((appProcess.processName.equalsIgnoreCase (str))) {bHomeScreen = true;  }}}  

03 марта ’16 в 6:42
  • Я думаю, что с последними версиями Android вы будете получать информацию только о процессах своего собственного приложения? Следовательно это не сработает? — drmrbrewer 21 апр. ’20 в 7:25
добавить комментарий |

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

  if (Build.  VERSION.SDK_INT> = Build.VERSION_CODES.LOLLIPOP) {PackageManager localPackageManager = getPackageManager (); намерение checkHomeInLollipopIntent = новое намерение (Intent.ACTION_MAIN); checkHomeInLollipopIntent.addCategory (IntentCategory) String;  ackageManager.resolveActivity (checkHomeInLollipopIntent, PackageManager.MATCH_DEFAULT_ONLY) .activityInfo.packageName;  ActivityManager activityManager = (ActivityManager) этот .getSystemService (Context.ACTIVITY_SERVICE);  Список  appProcesses = activityManager .getRunningAppProcesses ();  for (RunningAppProcessInfo appProcess: appProcesses) {if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {if ((appProcess.processName.equalsIgnoreCase (str))) {bHomeScreen = true;  }}}  


Как восстановить домашний экран Android по умолчанию

Узнайте, как восстановить на смартфоне Android домашний экран по умолчанию.

Как сбросить домашний экран Android
Посмотреть сейчас

Примечание редактора от 18 марта 2019 г .: Этот совет для Android был впервые опубликован в ноябре 2013 года. С тех пор мы включили видеоурок, добавили шаги для Android Oreo и более поздних версий, а также обновили соответствующие ресурсы.

Это будет работать независимо от того, что Устройство Android, которое у вас есть *, хотя я предполагаю, что вы используете Android 4.x. (* Для Android Oreo и более поздних версий выполните действия, описанные в en d статьи.) Основное отличие, которое вы можете обнаружить, — это домашний экран, используемый вашим устройством по умолчанию. Например, линейка Samsung Galaxy использует домашний экран TouchWiz, тогда как Motorola Moto X использует Launcher. Вам также необходимо знать имя запускаемой программы запуска (например, Nova или 3D Home). Вот как можно сбросить настройки по умолчанию.

СМОТРИ: Описание работы: разработчик Android (Tech Pro Research)

  1. Откройте приложение «Настройки».
  2. Найдите приложения или Диспетчер приложений (в зависимости от того, какое устройство вы используете).
  3. Проведите пальцем по экрану влево, чтобы перейти к Все вкладка.
  4. Прокрутите вниз, пока не найдете текущий домашний экран.
  5. Прокрутите вниз, пока не увидите кнопку Clear Defaults ( Рисунок A ).
  6. Нажмите «Очистить настройки по умолчанию».

Рисунок A

Сброс настроек по умолчанию на Motorola Moto X под брендом Verizon.

Проверить из этих дополнительных ресурсов для домашнего экрана смартфона:

  • Android 101: максимально используйте свой домашний экран
  • Android, ориентированный на производительность 4.0 Замена главного экрана
  • Добавьте ярлыки и папки прямого набора на главный экран Android
  • Совет. Начните использовать виджеты на своем устройстве Android

Теперь, когда вы очистили значения по умолчанию, вам нужно установить новый домашний экран по умолчанию. Для этого выполните следующие действия:

  1. Нажмите кнопку главного экрана.
  2. Выберите главный экран, который хотите использовать.
  3. Нажимайте всегда ( Рисунок B ).

Рисунок B

Установка домашнего экрана по умолчанию на платформе Android.

Этот совет хорош тем, что он применим к любому типу приложения, которое устанавливает приложение по умолчанию — просто измените значения по умолчанию, которые вы удалите из диспетчера приложений.

Для Android Oreo и более поздних версий выполните следующие действия:

  1. Откройте приложение «Настройки».
  2. Найдите «Домой».
  3. В результатах выберите приложение «Домой» ( Рисунок C ).
  4. Выберите средство запуска главного экрана, которое вы хотите использовать из всплывающего окна ( Рисунок D ).

Рисунок C

Рисунок D

Есть ли у вас другие профессиональные советы для платформы Android, которыми вы хотели бы поделиться? Опубликуйте их в ветке обсуждения ниже.

Информационный бюллетень по 5G и мобильному предприятию

Сети и устройства 5G, мобильная безопасность, удаленная поддержка и последние новости о телефонах, планшетах и ​​приложениях — вот некоторые из тем, которые мы рассмотрим. . Доставлено по вторникам и пятницам

Зарегистрируйтесь сегодня

Также см.

  • Безопасность мобильных устройств: советы для ИТ-специалистов (бесплатный PDF) (TechRepublic)
  • 5 советов, которые помогут сделать Android более продуктивным (TechRepublic)
  • BYOD (принесите -ваше-собственное-устройство) (Tech Pro Research)
  • 10 лучших способов защитить свой телефон Android (ZDNet)
  • 10 лучших смартфонов, которые вы можете купить прямо сейчас (ZDNet)
  • Лучшие мобильные VPN-сервисы на 2019 год (CNET)
  • Список лучших приложений для управления задачами на любой платформе (Download.com)
  • Смартфоны и мобильные технологии: дополнительная информация, которую необходимо прочитать (TechRepublic на Flipboard)
Оцените статью
logicle.ru
Добавить комментарий