Android 监听开机广播打开APP

  • 仅在Android原生系统上测试通过,由于国内手机厂商都有自己的自启动管理,因此不确定是否可用

1.创建广播接收者

public class MyBroadcastReceiver extends BroadcastReceiver {

    private static final String TAG = "BootBroadcastReceiver";

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d(TAG, "onReceive: 系统开机了" + intent.getAction());

        Intent intent2 = new Intent(context, MainActivity.class);
        intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent2);

    }
}

2.清单文件中配置权限

<!--监听开机广播-->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

3.清单文件中注册广播接收者

  • AndroidManifest.xml的application标签中注册

      <!--开机广播接收者-->
      <receiver android:name=".receiver.MyBroadcastReceiver">
          <intent-filter>
              <!--注册开机广播地址-->
              <action android:name="android.intent.action.BOOT_COMPLETED"/>
              <category android:name="android.intent.category.DEFAULT"/>
          </intent-filter>
      </receiver>
    

4.系统开机完成之后监听到广播自动打开App默认启动页面

image.png

Android应用中,如果你想让应用程序在手机开机时自动启动,你可以通过创建一个BroadcastReceiver来监听`ACTION_BOOT_COMPLETED`这个开机完成的系统广播。以下是简单的步骤: 1. **添加权限**: 首先,在你的AndroidManifest.xml文件中添加接收开机广播的权限: ```xml <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> ``` 2. **创建BroadcastReceiver**: 创建一个新的Java或Kotlin类,继承自`BroadcastReceiver`,并重写它的两个关键方法:`onReceive()` 和 `onEnabled() / onDisabled()` (取决于你的需求)。 ```java // Java 示例 public class BootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { startYourApp(context); // 调用启动应用的方法 } } private void startYourApp(Context context) { // 使用startService()或startActivity()等方法启动你的主活动或服务 Intent yourIntent = new Intent(context, YourMainActivity.class); context.startActivity(yourIntent); } } ``` 3. **注册BroadcastReceiver**: 在你的`Application` 或者某个需要接收到开机事件的地方,注册这个BroadcastReceiver: ```java public class MyApplication extends Application { @Override protected void onCreate() { super.onCreate(); registerReceiver(bootReceiver, new IntentFilter(Intent.ACTION_BOOT_COMPLETED)); } private final BroadcastReceiver bootReceiver = new BootReceiver(); @Override public void onTerminate() { super.onTerminate(); unregisterReceiver(bootReceiver); } } ``` 4. **注意**: - 确保在你的`onCreate()` 方法里注销`BootReceiver`,避免内存泄露。 - 如果你的应用不需要长期运行,可以考虑在用户退出应用后停止服务或关闭广播接收器,防止不必要的资源消耗。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值