Android 开机自动启动程序

最近开发项目遇到一个需求,那就是将开发的程序设置成主程序,让Android系统一启动就运行该程序,接下来让我们来实现一下:

我所开发的安卓系统是 Android 12

  1. 我们先在AndroidManifest文件中加入所需要的权限:

	<!--  为程序的用户权限添加接收系统启动完成广播的权限  -->
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <!--  允许出现在其他应用上的权限  -->
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    
  1. 自定义一个开机自启的一个广播接收器:
    定义一个类,让他继承 BroadcastReceiver

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

  1. 在AndroidManifests文件中进行注册:
<receiver
    android:enabled="true"
    android:name="com.example.action.BootReceiver"
    android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</receiver>

最后,我们还需要在代码中判断一下是不是已经有权限:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
	 if (!Settings.canDrawOverlays(this)) {
	         Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
	         intent.setData(Uri.parse("package:" + getPackageName()));
	         startActivityForResult(intent, 0);
	     }
	 }

Settings.canDrawOverlays(this)方法是在API level 23也就是Android M中新加入的用于检查当前是否拥有出现在“出现在其他应用上”权限的方法。在6.0以前的系统版本,悬浮窗权限是默认开启的,直接使用即可。

注意:
我们要先运行一遍,把该有的权限都给了然后关机后才能重启。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值