Android设置App是否开机自启动
发布日期:2021-07-30 03:26:05 浏览次数:5 分类:技术文章

本文共 2638 字,大约阅读时间需要 8 分钟。

说明: 我们的app有时候有设置开机是否自启动的需求。开机自启动其实很简单。

要设置自启动,首先,我们要让app能够自己启动:

第一步实现自启动

1、权限不能没有:

2、我们需要一个广播:这里的MainActivity.class是你想要启动的Activity

public class BootReceiver extends BroadcastReceiver {
@Override public void onReceive(Context context, Intent intent) { if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) { Intent intent2 = new Intent(context, MainActivity.class); intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent2); } } }

3、还要注册这个广播,这里要说的是,开机完成的广播是系统广播,不允许在代码里面注册:

到这里,自启动就能实现了。

第二步控制是否自启动:

之前一直觉得,用SharedPreferences存一个标志就能实现,比如

public class BootReceiver extends BroadcastReceiver {
public final static String AUTO_START = "AUTO_START"; @Override public void onReceive(Context context, Intent intent) { if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) { SharedPreferences settings = context.getSharedPreferences(AUTO_START,Context.MODE_PRIVATE); if(settings.getBoolean("AUTO_START", false)){ Intent intent2 = new Intent(context, MainActivity.class); intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent2); } } } }

然而发现,并没有什么用,这里都取不到这个SharedPreferences存的值,我也不知为毛,那就只能找其他方法了;

在互联网的世界游荡,终于看到了这个标题。“Android禁用和开启四大组件的方法”原文:,当时就懵逼了,四大组件还能禁用?

看了这篇文章还真找到了完成我们需求的方法:

当我们设置开机禁止自启动的时候:只要把我们的BootReceiver干掉就行了;
具体如下:

private void setComponentEnabled(Class
clazz, boolean enabled) { final ComponentName c = new ComponentName(this, clazz.getName()); getPackageManager().setComponentEnabledSetting(c, enabled ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); }

先说下这两个参数。第一个:BootReceiver.class,第二个:就是你的开机是否自启动boolean值了;

再说一下这个方法:

setComponentEnabledSetting (ComponentName componentName, int newState, int flags)
componentName:组件名称
newState:组件新的状态,可以设置三个值,分别是如下:
不可用状态:COMPONENT_ENABLED_STATE_DISABLED
可用状态:COMPONENT_ENABLED_STATE_ENABLED
默认状态:COMPONENT_ENABLED_STATE_DEFAULT
flags:行为标签,值可以是DONT_KILL_APP或者0。 0说明杀死包含该组件的app。

到这里app设置开机是否自启动就完工了;

不过我还是想啰嗦一句:希望大家还是看一看
大家都知道,现在的手机,有自带内存的,还有可以插SD卡的,在Android API Level大于8的时候,程序是可以安装在SD卡上的。那么问题又来了,很不幸的,你的app被用户安装在SD卡,可是SD卡挂载是在BOOT_COMPLETED这广播发送之后才开始的,So,你的app一样不能启动。但是别担心啊:Android框架说:Don’t call me, I’ll call you back。SD挂载完成了,一样是有广播的。去监听这个广播就行了。

转载地址:https://blog.csdn.net/u010886975/article/details/52911875 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Android stroke 边框线 某一边
下一篇:Android Dialog去掉标题Title

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年03月20日 14时31分32秒