How to open window of Autostart Application for all devices? [closed]

匿名 (未验证) 提交于 2019-12-03 01:18:02

问题:

How to open window of Autostart Application for all devices?

回答1:

Below site will give you idea about Autostart

https://www.androidauthority.com/auto-start-app-review-61346/

Below Codes will help you to open the settings to enable the Autostart for most of the Phones.(Collected from many sources)

Special Thanks to Xan and https://github.com/dirkam/backgroundable-android

private static final Intent[] AUTO_START_INTENTS = {     new Intent().setComponent(new ComponentName("com.samsung.android.lool",       "com.samsung.android.sm.ui.battery.BatteryActivity")),     new Intent("miui.intent.action.OP_AUTO_START").addCategory(Intent.CATEGORY_DEFAULT),     new Intent().setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity")),     new Intent().setComponent(new ComponentName("com.letv.android.letvsafe", "com.letv.android.letvsafe.AutobootManageActivity")),     new Intent().setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity")),     new Intent().setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.permission.startup.StartupAppListActivity")),     new Intent().setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.startupapp.StartupAppListActivity")),     new Intent().setComponent(new ComponentName("com.oppo.safe", "com.oppo.safe.permission.startup.StartupAppListActivity")),     new Intent().setComponent(new ComponentName("com.iqoo.secure", "com.iqoo.secure.ui.phoneoptimize.AddWhiteListActivity")),     new Intent().setComponent(new ComponentName("com.iqoo.secure", "com.iqoo.secure.ui.phoneoptimize.BgStartUpManager")),     new Intent().setComponent(new ComponentName("com.vivo.permissionmanager", "com.vivo.permissionmanager.activity.BgStartUpManagerActivity")),     new Intent().setComponent(new ComponentName("com.asus.mobilemanager", "com.asus.mobilemanager.entry.FunctionActivity")).setData(       Uri.parse("mobilemanager://function/entry/AutoStart"))   }; 

and inside your OnCreate()

for (Intent intent : AUTO_START_INTENTS){       if (getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY) != null) {         startActivity(intent);         break;       }    }   } 

or

Better to show it like the code below to make user understand why to enable it.

 for (Intent intent : AUTO_START_INTENTS)       if (getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY) != null) {         new MaterialDialog.Builder(this).title("Enable AutoStart")           .content(             "Please allow App to always run in the background,else our services can't be accessed when you are in distress")           .theme(Theme.LIGHT)           .positiveText("ALLOW")           .onPositive(new MaterialDialog.SingleButtonCallback() {             @Override             public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {               try {                 for (Intent intent : AUTO_START_INTENTS)                   if (getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY) != null) {                     startActivity(intent);                     break;                   }               } catch (Exception e) {                 e.printStackTrace();               }             }           })           .show();         break;       }  

eg:

import android.content.ComponentName; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import com.savingyou.android.R;   public class ExampleActivity extends AppCompatActivity {    private static final Intent[] AUTO_START_INTENTS = {     new Intent().setComponent(new ComponentName("com.samsung.android.lool",       "com.samsung.android.sm.ui.battery.BatteryActivity")),     new Intent("miui.intent.action.OP_AUTO_START").addCategory(Intent.CATEGORY_DEFAULT),     new Intent().setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity")),     new Intent().setComponent(new ComponentName("com.letv.android.letvsafe", "com.letv.android.letvsafe.AutobootManageActivity")),     new Intent().setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity")),     new Intent().setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.permission.startup.StartupAppListActivity")),     new Intent().setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.startupapp.StartupAppListActivity")),     new Intent().setComponent(new ComponentName("com.oppo.safe", "com.oppo.safe.permission.startup.StartupAppListActivity")),     new Intent().setComponent(new ComponentName("com.iqoo.secure", "com.iqoo.secure.ui.phoneoptimize.AddWhiteListActivity")),     new Intent().setComponent(new ComponentName("com.iqoo.secure", "com.iqoo.secure.ui.phoneoptimize.BgStartUpManager")),     new Intent().setComponent(new ComponentName("com.vivo.permissionmanager", "com.vivo.permissionmanager.activity.BgStartUpManagerActivity")),     new Intent().setComponent(new ComponentName("com.asus.mobilemanager", "com.asus.mobilemanager.entry.FunctionActivity")).setData(       Uri.parse("mobilemanager://function/entry/AutoStart"))   };    @Override   protected void onCreate(@Nullable Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);      for (Intent intent : AUTO_START_INTENTS){       if (getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY) != null) {         startActivity(intent);         break;       }    }   } } 

Hope it may help you.



回答2:

AndroidManifest.xml below code:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />  <receiver android:enabled="true" android:exported="true"  android:name="yourpackage.BootReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">  <intent-filter>     <action android:name="android.intent.action.BOOT_COMPLETED" />     <action android:name="android.intent.action.QUICKBOOT_POWERON" />     <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> 

Then create a new class BootReceiver.java

public class yourActivityRunOnStartup extends BroadcastReceiver {  @Override public void onReceive(Context context, Intent intent) {     if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {         Intent i = new Intent(context, MainActivity.class);         i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);         context.startActivity(i);     }   } } 

Maybe helpful for you. Good luck!



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!