美文网首页
Android 设置开机自启动

Android 设置开机自启动

作者: Marlon_IT | 来源:发表于2020-09-04 13:41 被阅读0次

    前段时间在做智能机器人等定制android系统开发的应用,因为机器人定制应用,需要在系统启动的时候就运行程序,不需要展示系统桌面,这里需要用到系统开机应用自启动,也就是常说的开机自启动。
    记录一下实现流程:

    1、权限引入

    在AndroidManifest.xml文件中配置监听启动权限

        <!--.接收启动完成的广播权限-->
        <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    
    2、创建监听启动完成的广播接收者

    新建一个监听广播接收者BootReceiver

    public class BootReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
                LogUtils.e("自启动了 !!!!!");
                Intent newIntent = new Intent(context, MainActivity.class);  // 要启动的Activity
                //1.如果自启动APP,参数为需要自动启动的应用包名
                //Intent intent = getPackageManager().getLaunchIntentForPackage(packageName);
                //这句话必须加上才能开机自动运行app的界面
                newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                //2.如果自启动Activity
                context.startActivity(newIntent);
                //3.如果自启动服务
                //context.startService(newIntent);
            }
        }
    }
    
    3、最后在AndroidManifest中注册这个广播接收者
            <receiver
                android:name=".server.BootReceiver"
                android:enabled="true"
                android:exported="true">
                <intent-filter android:priority="1000">
                    <action android:name="android.intent.action.BOOT_COMPLETED" />
                    <category android:name="android.intent.category.DEFAULT"/>
                </intent-filter>
            </receiver>
    
    4、编译并启动一下应用

    安装app到手机上,然后启动一次程序(据说安卓4.0以后,必须先启动一次程序才能接收到开机完成的广播,目的是防止恶意程序)

    5、重启手机,测试app有没有自动启动。如果有,那么恭喜你。如果没有,请往下看。

    如果按照上面的全部步骤后操作后,重启没有自动启动程序,怎么办呢?是怎么回事呢?

    1. 那么首先请检查一下你的手机是不是安装了360等安全助手之类的软件,如果有,请在软件的自启动软件管理中将app设置为允许
    2. 我的手机没有安装这些软件,但是手机中自带了安全助手,有的手机系统设置里面自带了自启动软件管理的功能 ,所以在这里将我们的app设置为允许开机启动),重启手机,测试是否成功。

    如果还是失败,那么请检查你的手机是不是设置了app安装首选位置是sd卡,据说安装到sd卡的话,因为手机启动成功后(发送了启动完成的广播后)才加载sd卡,所以app接收不到广播。如果是的话,把app安装到内部存储试试。如果不懂得设置的话,那么直接在AndroidManifest.xml文件中设置安装路径,在manifest的根节点中加入android:installLocation="internalOnly"。如下:

    <manifest
        package="cn.weixq.autorun"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:installLocation="internalOnly">
    

    相关文章

      网友评论

          本文标题:Android 设置开机自启动

          本文链接:https://www.haomeiwen.com/subject/hcyzsktx.html