Установить Android Launcher по умолчанию на устройствах Huawei? - PullRequest
0 голосов
/ 06 января 2019

Моя цель состоит в том, чтобы установить мое приложение как средство запуска по умолчанию на устройствах Huawei.

1 - Пояснения:

1.1 - Текущая ситуация:

Я уже могу:

  • Проверьте, является ли мое приложение средством запуска по умолчанию
  • Отображение «пусковой установки» (с выбором «использовать один раз» / «всегда»)

Это все работает нормально. кроме устройств Huawei!

С моей точки зрения, Android-версия Huawei должным образом не соблюдает договор о намерениях ACTION_MANAGE_DEFAULT_APPS_SETTINGS.

// this displays the list of default apps on all tested devices, except on Huawei devices!
// instead, it does display apps permissions, app links and apps'advanced settings
intent.setAction(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS);
activity.startActivity(intent);

Как План B, я могу отобразить страницу настроек «Приложения и уведомления», используя это:

String packageName = "com.android.settings";
String className = "Settings$AppAndNotificationDashboardActivity";
intent.setClassName(packageName, packageName + "." + className);
activity.startActivity(intent);

Таким образом, пользователь может перемещаться оттуда, нажимая следующую последовательность пунктов меню:

  • -> Расширенные параметры (расширяемый элемент меню: отсутствует на планшете и не уверен, что присутствует на телефоне)
  • -> Приложения по умолчанию
  • -> Панель запуска по умолчанию

Это требует 2 или 3 шагов, которых я бы хотел избежать.

1.2 - Это можно улучшить!

Я обнаружил, что при выборе пункта меню «-> Приложения по умолчанию» запускается (com.android.settings, .SubSettings) Intent (с дополнительным), но я не смог сделать это работает (разрешение на отказ).

Но я установил Nova Launcher и оказалось, что он может отображать страницу настроек "-> Приложения по умолчанию" на устройствах Huawei!
Таким образом, пользователь попадает на страницу, где ему / ей нужно только нажать «-> Панель запуска по умолчанию», а затем выбрать панель запуска по умолчанию: гораздо проще

2 - Вопросы:

Поскольку я думаю, что просто невозможно отобразить «Lancher Picker» на устройствах Huawei, вот мой вопрос:
Как отобразить страницу настроек «-> Приложения по умолчанию» (изображение здесь) на устройствах Huawei (как это делает Nova Launcher)?
Они используют другое намеренное действие на устройствах Huawei?

Заранее спасибо за помощь.

enter image description here

1 Ответ

0 голосов
/ 15 января 2019

Да на устройствах Huawei, Nova использует другое намерение, чтобы открыть правильный экран. Я, вероятно, обнаружил это, используя apktool в файле Settings.apk, извлеченном из устройства Huawei и просмотрев AndroidManifest. Обратите внимание, что «com.android» всегда является запахом кода, поскольку это означает, что он не является частью общедоступного API. Кроме того, это даже не «com.android», так как он не существует в AOSP, а com.android.settings.PREFERRED_SETTINGS - это изобретение Huawei. Весьма вероятно, что некоторые устройства Huawei не будут иметь этого вообще. Также возможно, что в будущем это намерение может продолжать работать, но не делать то, что оно делает в настоящее время. Так что обращайтесь с этим осторожно.

/* Some Huawei devices don't let us reset normally, handle it by opening preferred apps */
Intent preferredApps = new Intent("com.android.settings.PREFERRED_SETTINGS");
preferredApps.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
if (pm.resolveActivity(preferredApps, 0) != null) {
    context.startActivity(preferredApps);
} else {
    ...
}
...