Android进阶之路 - 开机自启动

定义广播


主要用于我们接收到系统发送的开机广播后,APP要做的处理 ~

StartReceiver

package nk.com.startappdemo;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

/**

  • @author MrLiu

  • @date 2020/5/8

  • desc 广播处理

*/

public class StartReceiver extends BroadcastReceiver {

public StartReceiver() {

}

@Override

public void onReceive(Context context, Intent intent) {

//此处及是重启的之后,打开我们app的方法

if (“android.intent.action.BOOT_COMPLETED”.equals(intent.getAction())) {

Intent intent= new Intent(context, MainActivity.class);

//intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 非常重要,如果缺少的话,程序将在启动时报错

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

//自启动APP(Activity)

context.startActivity(intent);

//自启动服务(Service)

//context.startService(intent);

}

}

}

注册广播


AndroidManifest.xml 静态注册广播,配置系统开机的intent-filter ~

<receiver

android:name=“.StartReceiver”

android:enabled=“true”

android:exported=“true”>

场景测试


简单的一个输出语句,同于效果展示,当值不经意间的插曲 ~

MainActivity

public class MainActivity extends ActionBarActivity{

@Override

protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Toast.makeText(this, “哈哈,我成功启动了!”, Toast.LENGTH_LONG).show();

Log.e(“AutoRun”,“哈哈,我成功启动了!”);

}

}

注意要点


同设备尽可能只允许一个APP实现开机自启动的功能,否则俩者应该会有冲突

针对Andorid4.0之后需先启动一次APP才可收到开机完成的广播,主要目的是防止恶意程序

查看设备是否有360之类的安全软件,如有:则再软件请在软件的自启动软件管理中将app设置为【允许】,重启手机,测试是否成功

查看系统设置里是否自带自启动软件管理的功能 ,如有:将app设置为【允许开机启动】,重启手机,测试是否成功 ~

针对部分机型的设置方式

小米

打开「安全中心」-> 点击「应用管理」-> 点击「权限」-> 点击「自启动管理」-> 找到「触动精灵」启动开关

中兴/魅族

打开手机设置 -> 滑到底部找到「应用管理」-> 找到并点击「触动精灵」-> 点击「权限管理」-> 打开「自启动」开关

华为荣耀V8

方法一:点击「设置」-> 找到并点击「应用管理」-> 找到触动精灵点击「权限」-> 点击「设置单项权限」-> 点击开启「应用自动自动」

方法二:点击「手机管家」-> 点击「权限管理」-> 找到触动精灵点击「设置单项权限」-> 点击开启「应用自动启动」

三星(安装kingroot)

打开「kingroot」-> 点击「高级权限管理」-> 点击「自启行为管理」-> 找到触动精灵启动服务开关

其它手机

通常情况下,自启动权限开关都在应用管理权限设置中,以上仅列出我方现已知的开启方式,欢迎大家补充

移除任务管理中的app,也称为杀掉app的进程,一般就是俩下Home键盘或者上滑的等操作可以唤出目前在后天的app进程咯 ~

检查手机是否设置了app安装首选位置是sd卡,据说安装到sd卡的话,因为手机启动成功后(发送了启动完成的广播后)才加载sd卡,所以app接收不到广播。如果是的话,把app安装到内部存储试试。如果不懂得设置的话,那么直接在AndroidManifest.xml文件中设置安装路径,android:installLocation=“internalOnly” - (关于这点未亲自尝试);

如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值