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
    评论
Android 中让程序开机自动启动,通常有两种方式: 1. 使用广播接收器 在 AndroidManifest.xml 文件中添加以下代码: ``` <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> ``` 然后创建一个 BroadcastReceiver,在接收到 `android.intent.action.BOOT_COMPLETED` 广播时启动你的程序。 示例代码: ```java public class BootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { Intent bootIntent = new Intent(context, YourActivity.class); bootIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(bootIntent); } } } ``` 在 AndroidManifest.xml 中添加以下代码: ```xml <receiver android:name=".BootReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> ``` 2. 使用系统服务 在 AndroidManifest.xml 文件中添加以下代码: ``` <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> ``` 然后创建一个 Service,在 `onCreate()` 方法中启动你的程序。 示例代码: ```java public class BootService extends Service { @Override public void onCreate() { super.onCreate(); Intent bootIntent = new Intent(this, YourActivity.class); bootIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(bootIntent); } @Override public IBinder onBind(Intent intent) { return null; } } ``` 在 AndroidManifest.xml 中添加以下代码: ```xml <service android:name=".BootService"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </service> ``` 注意:使用第二种方式需要在 Android 5.0 以上版本上进行测试,因为 Android 5.0 以下版本不支持在 Service 中启动 Activity。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值