Wear OS设备重启后如何实现应用自动启动
Wear OS应用设备重启后自动启动实现方案
1. 添加所需权限
在AndroidManifest.xml的<manifest>标签下添加监听开机广播的权限:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
如果需要申请忽略电池优化避免服务被系统杀死,可以额外添加:
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
2. 静态注册开机广播接收器
Android系统要求只有静态注册的广播接收器才能在应用未启动时收到开机完成广播,因此需要在AndroidManifest.xml的<application>标签下注册接收器:
<receiver android:name=".BootCompletedReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver>
3. 实现广播接收器逻辑
新建BootCompletedReceiver类继承BroadcastReceiver,收到广播后启动你的前台服务:
class BootCompletedReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { if (Intent.ACTION_BOOT_COMPLETED == intent.action) { // Android 8.0及以上版本需要调用startForegroundService启动前台服务 val serviceIntent = Intent(context, YourForegroundService::class.java) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { context.startForegroundService(serviceIntent) } else { context.startService(serviceIntent) } } } }
*注意:启动前台服务后,需要在服务的onCreate方法中5秒内调用startForeground()方法展示常驻通知,否则会触发系统ANR异常。
4. 必要适配和验证
- 应用首次安装后必须手动打开一次,否则Android系统会将应用标记为未激活状态,无法收到开机广播
- 部分Wear OS设备有严格的省电限制,可引导用户将应用加入系统电池优化白名单,避免服务被后台强制回收
- 测试时需完全关机再开机验证,不要使用模拟器的快速重启功能,否则可能无法触发开机广播
内容的提问来源于stack exchange,提问作者lmano
相关产品推荐
相关产品推荐

