Разрешение автозапуска программно - PullRequest
0 голосов
/ 20 января 2019

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

Intent autostartIntent = new Intent();
    if ("xiaomi".equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
       autostartIntent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"));
       startActivity(autostartIntent);
    } else if ("oppo".equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
       autostartIntent.setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.permission.startup.StartupAppListActivity"));
       startActivity(autostartIntent);
    } else if ("vivo".equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
       autostartIntent.setComponent(new ComponentName("com.vivo.permissionmanager", "com.vivo.permissionmanager.activity.BgStartUpManagerActivity"));
       startActivity(autostartIntent);
    } else if ("huawei".equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
       autostartIntent.setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity"));
       startActivity(autostartIntent);
}

Кроме того, когда я пытаюсь перенаправить пользователя на следующие устройства, я сталкиваюсь со следующими трудностями: 1. В RealMe 2 Pro, для которого производитель является Oppo, система не может запустить действие разрешений AutoStart.

  1. На устройствах Moto и Nokia я не могу определить путь активности AutoStart, поэтому могу перенаправить пользователя на эту страницу напрямую.

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

1 Ответ

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

Найдя решение этого вопроса, я открываю страницу «Оптимизация заряда батареи», чтобы пользователь мог отключить «Оптимизацию заряда батареи» для моего приложения.

Вот код, который я использую:

AlertDialog.Builder builder = new AlertDialog.Builder(PermissionsActivity.this);
    builder.setTitle("Turn off Battery Optimization");
    builder.setMessage("Find XYZ in the list of applications and choose ‘Don’t optimize’.");
    builder.setPositiveButton("Allow",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    if (Build.VERSION.SDK_INT >= 23) {
                        Intent intent = new Intent();
                        intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
                        startActivity(intent);
                    }
                }
            });

    builder.setNegativeButton("Deny", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            finish();
        }
    });
    builder.show();
...