Как получить разрешение автозапуска через простое диалоговое окно (Android)

#android #whitelist #autostart

#Android #белый список #автозапуск

Вопрос:

Некоторые бренды, такие как Xiaomi, Oppo, Vivo, Honor и т. Д., Не разрешают приложениям запускать сервис / широковещательный приемник и т. Д. В фоновом режиме, Пока мы не внесем приложение в белый список, выполнив такие действия, как предоставление разрешения «Автозапуск». Чтобы заставить пользователя предоставить приложению разрешение на автозапуск, мое приложение выводит пользователя на экран настроек, где он может включить автозапуск для приложения. Я думаю, что это может вызвать у пользователя подозрения в отношении моего приложения, или они могут чувствовать себя запуганными. Есть ли способ получить разрешение на автозапуск через диалоговое окно или есть альтернативный способ внести приложение в белый список, кроме получения разрешения на автозапуск?

Прямо сейчас я использую этот код:

  if (Build.BRAND.equalsIgnoreCase("xiaomi")) {
            Intent intent = new Intent();
            intent.setComponent(new

                    ComponentName("com.miui.securitycenter",
                    "com.miui.permcenter.autostart.AutoStartManagementActivity"));
            intent.setData(Uri.parse("package:"   getPackageName()));

            startActivity(intent);
        } else if (Build.MANUFACTURER.equalsIgnoreCase("oppo")) {
            try {
                Intent intent = new Intent();
                intent.setClassName("com.coloros.safecenter",
                        "com.coloros.safecenter.permission.startup.StartupAppListActivity");
                startActivity(intent);
            } catch (Exception e) {
                try {
                    Intent intent = new Intent();
                    intent.setClassName("com.oppo.safe",
                            "com.oppo.safe.permission.startup.StartupAppListActivity");
                    startActivity(intent);
                } catch (Exception ex) {
                    try {
                        Intent intent = new Intent();
                        intent.setClassName("com.coloros.safecenter",
                                "com.coloros.safecenter.startupapp.StartupAppListActivity");
                        startActivity(intent);
                    } catch (Exception exx) {

                    }
                }
            }
        }
 

Но он выводит пользователя на экран автозапуска в настройках, чего я не хочу.

Пожалуйста, предложите способ получить разрешение на автозапуск через диалоговое окно или другой способ внести приложение в белый список через простое диалоговое окно.