Android开机自启动

1.加入权限

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>

2.定义广播

用于我们接受到系统发送的开机广播后,APP要去的处理…

package cn.pinming.aiinspection.receiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import cn.pinming.aiinspection.activity.StartActivity;

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 intents = new Intent(context, StartActivity.class);
            //intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 超级重大,如果缺少的话,程序将在启动时报错
            intents.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            //自启动APP(Activity)
            context.startActivity(intents);
            //自启动服务(Service)
            //context.startService(intent);
        }
    }
}

3.注册广播

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

        <receiver
            android:name=".receiver.StartReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter android:priority="1000">
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

4.场景测试

public class MainActivity extends AppCompatActivity{
    @Override
    protected void onCreate(Bundle savedInstanceState){
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.e("AutoRun","我成功启动了!");
    }
}

5.注意

(1)同一设备尽可能只允许一个APP实现开机自启动功能,否则会有未知冲突。
(2)针对Andorid4.0之后需先启动一次APP才可收到开机完成的广播,主要目的是防止恶意程序。
(3)查看设备是否有360之类的安全软件,如有:则再软件请在软件的自启动软件管理中将app设置为【允许】,重启手机,测试是否成功。
(4)查看系统设置里是否自带自启动软件管理的功能 ,如有:将app设置为【允许开机启动】,重启手机,测试是否成功

参考:https://blog.csdn.net/qq_20451879/article/details/105790345

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容