Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to programmatically enable auto start and floating window permissions

  1. How can I enable auto-start permission programmatically?
  2. How to find which phone need to do auto-start code?
  3. 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);              } 
like image 304
Sagar Avatar asked Jun 06 '17 07:06

Sagar


People also ask

How do I set autostart permission in android programmatically?

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 .

How do I get Miui security app auto start permission programmatically?

You need to give permissions in the in build security application for xiaomi. 1. open the security app 2. go to permissions 3. go to auto start 4. enable the applications that you want to keep running in the background!

How do I allow apps to start automatically?

To give this method a try, open Settings and go to the Application Manager. It should be in "Installed Apps" or "Applications," depending on your device. Select an app from the list of downloaded apps and turn the Autostart option on or off.


2 Answers

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) {                  }             }         } } 
like image 161
Sagar Avatar answered Oct 07 '22 06:10

Sagar


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.

like image 34
Adarsh Binjola Avatar answered Oct 07 '22 06:10

Adarsh Binjola