Слушатель компонентов

У меня есть телефон huawei, и когда я использую службу переднего плана на huawei, она просто останавливает службу. Однако я нашел это решение ( https://stackoverflow.com/a/51726040/14446860 ). Поскольку мое приложение не включено в защищенные приложения на моем телефоне huawei, служба останавливается.

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

public class Constants {
//updated the POWERMANAGER_INTENTS 26/06/2019

static final List<Intent> POWERMANAGER_INTENTS = Arrays.asList(
        new Intent().setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity")),
        new Intent().setComponent(new ComponentName("com.letv.android.letvsafe", "com.letv.android.letvsafe.AutobootManageActivity")),
        new Intent().setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity")),
        new Intent().setComponent(new ComponentName("com.huawei.systemmanager", Build.VERSION.SDK_INT >= Build.VERSION_CODES.P? "com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity": "com.huawei.systemmanager.appcontrol.activity.StartupAppControlActivity")),
        new Intent().setComponent(new ComponentName("com.coloros.oppoguardelf", "com.coloros.powermanager.fuelgaue.PowerUsageModelActivity")),
        new Intent().setComponent(new ComponentName("com.coloros.oppoguardelf", "com.coloros.powermanager.fuelgaue.PowerSaverModeActivity")),
        new Intent().setComponent(new ComponentName("com.coloros.oppoguardelf", "com.coloros.powermanager.fuelgaue.PowerConsumptionActivity")),
        new Intent().setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.permission.startup.StartupAppListActivity")),
        Build.VERSION.SDK_INT >= Build.VERSION_CODES.N ? new Intent().setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.startupapp.StartupAppListActivity")).setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS).setData(Uri.parse("package:"+ MyApplication.getContext().getPackageName())) : null,
        new Intent().setComponent(new ComponentName("com.oppo.safe", "com.oppo.safe.permission.startup.StartupAppListActivity")),
        new Intent().setComponent(new ComponentName("com.iqoo.secure", "com.iqoo.secure.ui.phoneoptimize.AddWhiteListActivity")),
        new Intent().setComponent(new ComponentName("com.iqoo.secure", "com.iqoo.secure.ui.phoneoptimize.BgStartUpManager")),
        new Intent().setComponent(new ComponentName("com.vivo.permissionmanager", "com.vivo.permissionmanager.activity.BgStartUpManagerActivity")),
        new Intent().setComponent(new ComponentName("com.asus.mobilemanager", "com.asus.mobilemanager.entry.FunctionActivity")),
        new Intent().setComponent(new ComponentName("com.asus.mobilemanager", "com.asus.mobilemanager.autostart.AutoStartActivity")),
        new Intent().setComponent(new ComponentName("com.letv.android.letvsafe", "com.letv.android.letvsafe.AutobootManageActivity"))
                .setData(android.net.Uri.parse("mobilemanager://function/entry/AutoStart")),
        new Intent().setComponent(new ComponentName("com.meizu.safe", "com.meizu.safe.security.SHOW_APPSEC")).addCategory(Intent.CATEGORY_DEFAULT).putExtra("packageName", BuildConfig.APPLICATION_ID)
);
}

Спасибо.


person Mr.Goomer    schedule 04.02.2021    source источник


Ответы (1)


ОБНОВЛЕНИЕ

  1. EMUI поддерживает переход из пользовательского интерфейса приложения на страницу управления запуском приложения, но не предоставляет интерфейс для проверки того, поддерживается ли приложение в фоновом режиме.
  2. Поэтому рекомендуется отображать подсказку вместо перехода к системе.
  • Когда приложение запускается в первый раз, отображается подсказка, указывающая пользователям вручную поддерживать работу приложения в фоновом режиме.
  • Если фоновая поддержка активности не включена, приложение не может работать в фоновом режиме в течение длительного времени. Вам рекомендуется использовать часто задаваемые вопросы, чтобы уведомить пользователей о проблеме в вашем приложении.

Этот опыт может быть не самым лучшим. Однако, чтобы обеспечить энергопотребление и производительность телефона, Huawei не предоставляет соответствующие интерфейсы.


Это сделано для предотвращения вредоносных операций, таких как фоновая работа и связанный с ней запуск, которые могут привести к резкому увеличению объема памяти и энергопотребления вашего телефона. По умолчанию EMUI не позволяет связанным приложениям работать в фоновом режиме или ассоциироваться с телефоном. Однако он поддерживает ручное поддержание активности на соответствующем телефоне, так что приложения могут включаться или автоматически запускаться в фоновом режиме, а настройки вступают в силу после перезагрузки телефона.

Если приложение должно быть разрешено в фоновом режиме все время из-за сценария использования, мы предлагаем, чтобы при первом запуске приложения после установки всплывающее окно давало пользователю указание выполнить операцию поддержания активности вручную.

Вы можете сделать это, выполнив следующие действия: Диспетчер телефона → Управление запуском приложений → Закрыть автоматическое управление → Выберите Разрешить самостоятельный запуск / Разрешить фоновую активность.

Всплывающее окно предполагает, что приложению необходимо выполнить небольшую доработку соответственно.

person shirley    schedule 05.02.2021
comment
Прежде всего, большое спасибо за ваш подробный ответ. Как насчет пожилых людей и людей, которые делают это впервые? Могу ли я настроить трансляцию, чтобы определить, включили ли они ее, и перевести их в основное действие? - person Mr.Goomer; 05.02.2021
comment
привет @Goomer, я обновил свой ответ, пожалуйста, обратитесь, спасибо за понимание! - person shirley; 08.02.2021