android - Cómo habilitar mediante programación los permisos de inicio automático y ventana flotante
android-permissions autostart (2)
¿Cómo puedo habilitar el permiso de inicio automático mediante programación? ¿Cómo encontrar qué teléfono necesita hacer el código de inicio automático? ¿Cómo verificar si el permiso de inicio automático está habilitado o deshabilitado?
Solo puedo encontrar información sobre el permiso emergente de visualización con el permiso
canDrawOverlay()
.
ayuda, he buscado mucho, quiero habilitar el inicio automático para el dispositivo si no está habilitado. Algunas soluciones que he encontrado a continuación
He encontrado código para xiaomi, honor y letv pero quiero lo mismo para Lenovo
if(Build.BRAND.equalsIgnoreCase("xiaomi") ){
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"));
startActivity(intent);
}else if(Build.BRAND.equalsIgnoreCase("Letv")){
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.letv.android.letvsafe", "com.letv.android.letvsafe.AutobootManageActivity"));
startActivity(intent);
}
else if(Build.BRAND.equalsIgnoreCase("Honor")){
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity"));
startActivity(intent);
}
** Las siguientes dos soluciones para Oppo y Vivo pueden resolver su problema, esto funcionó para mí **
Verifique la siguiente solución para habilitar el permiso de ventana flotante en el dispositivo 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 desde la tienda de juegos si xiaomi OS lo desea, ya que las aplicaciones como amazon, google IO, etc. tampoco pueden iniciar 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 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 habilitado o no.
Esto lo hace Mi en MIUI8 para ahorrar batería. Este problema desperdició mis 2 días XD
Referencia
Puedes consultar el artículo MIUI8