Saltar al contenido

Cómo habilitar mediante programación los permisos de inicio automático y ventana flotante

Compruebe la siguiente solución para habilitar el floating window y autostart permission por OPPO y VIVO dispositivos.

No hay forma de saber si la opción de inicio automático está habilitada o no. Puede comprobar manualmente en Security permissions => Autostart => Enable Autostart.

En dispositivos Oppo:

  private void initOPPO() 
    try 

        Intent i = new Intent(Intent.ACTION_MAIN);
        i.setComponent(new ComponentName("com.oppo.safe", "com.oppo.safe.permission.floatwindow.FloatWindowListActivity"));
        startActivity(i);
     catch (Exception e) 
        e.printStackTrace();
        try 

            Intent intent = new Intent("action.coloros.safecenter.FloatWindowListActivity");
            intent.setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.permission.floatwindow.FloatWindowListActivity"));
            startActivity(intent);
         catch (Exception ee) 

            ee.printStackTrace();
            try

                Intent i = new Intent("com.coloros.safecenter");
                i.setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.sysfloatwindow.FloatWindowListActivity"));
                startActivity(i);
            catch (Exception e1)

                e1.printStackTrace();
            
        

    

Permiso de inicio automático para VIVO

 private static void autoLaunchVivo(Context context) 
    try 
        Intent intent = new Intent();
        intent.setComponent(new ComponentName("com.iqoo.secure",
                "com.iqoo.secure.ui.phoneoptimize.AddWhiteListActivity"));
        context.startActivity(intent);
     catch (Exception e) 
        try 
            Intent intent = new Intent();
            intent.setComponent(new ComponentName("com.vivo.permissionmanager",
                    "com.vivo.permissionmanager.activity.BgStartUpManagerActivity"));
            context.startActivity(intent);
         catch (Exception ex) 
            try 
                Intent intent = new Intent();
                intent.setClassName("com.iqoo.secure",
                        "com.iqoo.secure.ui.phoneoptimize.BgStartUpManager");
                context.startActivity(intent);
             catch (Exception exx) 
                ex.printStackTrace();
            
        
    

Inicio automático para OPPO

 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) 

                
            
        

La función de inicio automático se habilitará automáticamente cuando descargue la aplicación de la tienda de juegos si el sistema operativo xiaomi lo quiere, ya que las aplicaciones como Amazon, Google IO, etc., tampoco pueden iniciarse automáticamente. En este caso, debe ir a Permisos de seguridad -> Inicio automático -> luego habilite el inicio automático desde allí.No puede hacer que la aplicación se inicie automáticamente por código, todo lo que puede hacer es mostrar un cuadro de diálogo para habilitar el inicio automático y llevar al usuario a la actividad de inicio automático, pero esta no es una buena opción ya que no puede verificar si el inicio automático es habilitado o no.

Esto lo hace Mi en MIUI8 para ahorrar batería.

Referencia

Puede consultar el artículo MIUI8

Usa esta clase de ayuda

 public class AutoStartHelper 

/***
 * Xiaomi
 */
private final String BRAND_XIAOMI = "xiaomi";
private String PACKAGE_XIAOMI_MAIN = "com.miui.securitycenter";
private String PACKAGE_XIAOMI_COMPONENT = "com.miui.permcenter.autostart.AutoStartManagementActivity";

/***
 * Letv
 */
private final String BRAND_LETV = "letv";
private String PACKAGE_LETV_MAIN = "com.letv.android.letvsafe";
private String PACKAGE_LETV_COMPONENT = "com.letv.android.letvsafe.AutobootManageActivity";

/***
 * ASUS ROG
 */
private final String BRAND_ASUS = "asus";
private String PACKAGE_ASUS_MAIN = "com.asus.mobilemanager";
private String PACKAGE_ASUS_COMPONENT = "com.asus.mobilemanager.powersaver.PowerSaverSettings";

/***
 * Honor
 */
private final String BRAND_HONOR = "honor";
private String PACKAGE_HONOR_MAIN = "com.huawei.systemmanager";
private String PACKAGE_HONOR_COMPONENT = "com.huawei.systemmanager.optimize.process.ProtectActivity";

/**
 * Oppo
 */
private final String BRAND_OPPO = "oppo";
private String PACKAGE_OPPO_MAIN = "com.coloros.safecenter";
private String PACKAGE_OPPO_FALLBACK = "com.oppo.safe";
private String PACKAGE_OPPO_COMPONENT = "com.coloros.safecenter.permission.startup.StartupAppListActivity";
private String PACKAGE_OPPO_COMPONENT_FALLBACK = "com.oppo.safe.permission.startup.StartupAppListActivity";
private String PACKAGE_OPPO_COMPONENT_FALLBACK_A = "com.coloros.safecenter.startupapp.StartupAppListActivity";

/**
 * Vivo
 */

private final String BRAND_VIVO = "vivo";
private String PACKAGE_VIVO_MAIN = "com.iqoo.secure";
private String PACKAGE_VIVO_FALLBACK = "com.vivo.perm;issionmanager";
private String PACKAGE_VIVO_COMPONENT = "com.iqoo.secure.ui.phoneoptimize.AddWhiteListActivity";
private String PACKAGE_VIVO_COMPONENT_FALLBACK = "com.vivo.permissionmanager.activity.BgStartUpManagerActivity";
private String PACKAGE_VIVO_COMPONENT_FALLBACK_A = "com.iqoo.secure.ui.phoneoptimize.BgStartUpManager";

/**
 * Nokia
 */

private final String BRAND_NOKIA = "nokia";
private String PACKAGE_NOKIA_MAIN = "com.evenwell.powersaving.g3";
private String PACKAGE_NOKIA_COMPONENT = "com.evenwell.powersaving.g3.exception.PowerSaverExceptionActivity";


private AutoStartHelper() 


public static AutoStartHelper getInstance() 
    return new AutoStartHelper();



public void getAutoStartPermission(Context context) 

    String build_info = Build.BRAND.toLowerCase();
    switch (build_info) 
        case BRAND_ASUS:
            autoStartAsus(context);
            break;
        case BRAND_XIAOMI:
            autoStartXiaomi(context);
            break;
        case BRAND_LETV:
            autoStartLetv(context);
            break;
        case BRAND_HONOR:
            autoStartHonor(context);
            break;
        case BRAND_OPPO:
            autoStartOppo(context);
            break;
        case BRAND_VIVO:
            autoStartVivo(context);
            break;
        case BRAND_NOKIA:
            autoStartNokia(context);
            break;

    



private void autoStartAsus(final Context context) 
    if (isPackageExists(context, PACKAGE_ASUS_MAIN)) 

        showAlert(context, (dialog, which) -> 
            try 
            PrefUtil.writeBoolean(context, PrefUtil.PREF_KEY_APP_AUTO_START, true);
                startIntent(context, PACKAGE_ASUS_MAIN, PACKAGE_ASUS_COMPONENT);
             catch (Exception e) 
                e.printStackTrace();
            
            dialog.dismiss();
        );

    




private void showAlert(Context context, DialogInterface.OnClickListener onClickListener) 

    new AlertDialog.Builder(context).setTitle("Allow AutoStart")
            .setMessage("Please enable auto start in settings.")
            .setPositiveButton("Allow", onClickListener).show().setCancelable(false);


private void autoStartXiaomi(final Context context) 
    if (isPackageExists(context, PACKAGE_XIAOMI_MAIN)) 
        showAlert(context, (dialog, which) -> 
            try 
                PrefUtil.writeBoolean(context, PrefUtil.PREF_KEY_APP_AUTO_START, true);
                startIntent(context, PACKAGE_XIAOMI_MAIN, PACKAGE_XIAOMI_COMPONENT);
             catch (Exception e) 
                e.printStackTrace();
            
        );


    


private void autoStartLetv(final Context context) 
    if (isPackageExists(context, PACKAGE_LETV_MAIN)) 
        showAlert(context, new DialogInterface.OnClickListener() 
            @Override
            public void onClick(DialogInterface dialog, int which) 

                try 
                    PrefUtil.writeBoolean(context, PrefUtil.PREF_KEY_APP_AUTO_START, true);
                    startIntent(context, PACKAGE_LETV_MAIN, PACKAGE_LETV_COMPONENT);
                 catch (Exception e) 
                    e.printStackTrace();
                
            
        );


    



private void autoStartHonor(final Context context) 
    if (isPackageExists(context, PACKAGE_HONOR_MAIN)) 
        showAlert(context, new DialogInterface.OnClickListener() 
            @Override
            public void onClick(DialogInterface dialog, int which) 

                try 
                    PrefUtil.writeBoolean(context, PrefUtil.PREF_KEY_APP_AUTO_START, true);
                    startIntent(context, PACKAGE_HONOR_MAIN, PACKAGE_HONOR_COMPONENT);
                 catch (Exception e) 
                    e.printStackTrace();
                
            
        );


    


private void autoStartOppo(final Context context)  isPackageExists(context, PACKAGE_OPPO_FALLBACK)) 
        showAlert(context, new DialogInterface.OnClickListener() 
            @Override
            public void onClick(DialogInterface dialog, int which) 

                try 
                    PrefUtil.writeBoolean(context, PrefUtil.PREF_KEY_APP_AUTO_START, true);
                    startIntent(context, PACKAGE_OPPO_MAIN, PACKAGE_OPPO_COMPONENT);
                 catch (Exception e) 
                    e.printStackTrace();
                    try 
                        PrefUtil.writeBoolean(context, PrefUtil.PREF_KEY_APP_AUTO_START, true);
                        startIntent(context, PACKAGE_OPPO_FALLBACK, PACKAGE_OPPO_COMPONENT_FALLBACK);
                     catch (Exception ex) 
                        ex.printStackTrace();
                        try 
                            PrefUtil.writeBoolean(context, PrefUtil.PREF_KEY_APP_AUTO_START, true);
                            startIntent(context, PACKAGE_OPPO_MAIN, PACKAGE_OPPO_COMPONENT_FALLBACK_A);
                         catch (Exception exx) 
                            exx.printStackTrace();
                        

                    

                
            
        );


    


private void autoStartVivo(final Context context) 

private void autoStartNokia(final Context context) 
    if (isPackageExists(context, PACKAGE_NOKIA_MAIN)) 
        showAlert(context, new DialogInterface.OnClickListener() 
            @Override
            public void onClick(DialogInterface dialog, int which) 

                try 
                    PrefUtil.writeBoolean(context, PrefUtil.PREF_KEY_APP_AUTO_START, true);
                    startIntent(context, PACKAGE_NOKIA_MAIN, PACKAGE_NOKIA_COMPONENT);
                 catch (Exception e) 
                    e.printStackTrace();
                
            
        );
    



private void startIntent(Context context, String packageName, String componentName) throws Exception 
    try 
        Intent intent = new Intent();
        intent.setComponent(new ComponentName(packageName, componentName));
        context.startActivity(intent);
     catch (Exception var5) 
        var5.printStackTrace();
        throw var5;
    


private Boolean isPackageExists(Context context, String targetPackage) 
    List packages;
    PackageManager pm = context.getPackageManager();
    packages = pm.getInstalledApplications(0);
    for (ApplicationInfo packageInfo :
            packages) 
        if (packageInfo.packageName.equals(targetPackage)) 
            return true;
        
    

    return false;
 

en tu actividad

        AutoStartHelper.getInstance().getAutoStartPermission(this);

no hay forma de rastrear si hemos habilitado el inicio automático o no.

Tienes la posibilidad recomendar este enunciado si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *