How to programmatically enable auto start and floating window permissions
- How can I enable auto-start permission programmatically?
- How to find which phone need to do auto-start code?
- How to check if the auto start permission is enable or disable?
I am able to find only about Display popup permission with canDrawOverlay()
permission`.
I want to enable auto-start for the device if it is not enabled.
I have found a solution for Xiaomi, honor and let.
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);
}
Please check the following solution to enable the floating window
and autostart permission
for OPPO
and VIVO
devices.
There's no way to find out whether the Auto-start option is enabled or not. You can manually check under Security permissions => Autostart => Enable Autostart
.
On Oppo devices:
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();
}
}
}
}
Auto Start permission for 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();
}
}
}
}
Auto Start for 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) {
}
}
}
}
Use this helper class
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) {
if (isPackageExists(context, PACKAGE_OPPO_MAIN) || 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) {
if (isPackageExists(context, PACKAGE_VIVO_MAIN) || isPackageExists(context, PACKAGE_VIVO_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_VIVO_MAIN, PACKAGE_VIVO_COMPONENT);
} catch (Exception e) {
e.printStackTrace();
try {
PrefUtil.writeBoolean(context, PrefUtil.PREF_KEY_APP_AUTO_START, true);
startIntent(context, PACKAGE_VIVO_FALLBACK, PACKAGE_VIVO_COMPONENT_FALLBACK);
} catch (Exception ex) {
ex.printStackTrace();
try {
PrefUtil.writeBoolean(context, PrefUtil.PREF_KEY_APP_AUTO_START, true);
startIntent(context, PACKAGE_VIVO_MAIN, PACKAGE_VIVO_COMPONENT_FALLBACK_A);
} catch (Exception exx) {
exx.printStackTrace();
}
}
}
}
});
}
}
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<ApplicationInfo> packages;
PackageManager pm = context.getPackageManager();
packages = pm.getInstalledApplications(0);
for (ApplicationInfo packageInfo :
packages) {
if (packageInfo.packageName.equals(targetPackage)) {
return true;
}
}
return false;
}
}
in your activity
AutoStartHelper.getInstance().getAutoStartPermission(this);
there is no way to track that we have enabled autostart or not.