设备完成重启过程后如何启动我的应用程序?

Posted

技术标签:

【中文标题】设备完成重启过程后如何启动我的应用程序?【英文标题】:How to start my application after device completing reboot process? 【发布时间】:2021-06-01 18:00:29 【问题描述】:

我创建了一个应用程序,我想在设备重启后打开它我正在使用广播接收器但无法正常工作,我该怎么办,任何替代解决方案。

我已经在 5.1 以及 10,11 上测试过

这是我的接收器

package com.activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class StartActivityOnBootReceiver extends BroadcastReceiver 
    @Override
    public void onReceive(Context context, Intent intent) 
        if (Intent.ACTION_BOOT_COMPLETED.equals("android.intent.action.BOOT_COMPLETED")) 
            Intent i = new Intent(context, SplashActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);
        
    

这是我的清单

<receiver android:name="com.activity.StartActivityOnBootReceiver"
        android:enabled="true"
        android:exported="true">

        <intent-filter>

            <action android:name="android.intent.action.BOOT_COMPLETED" />

            <action android:name="android.intent.action.QUICKBOOT_POWERON" />


            <action android:name="android.intent.action.REBOOT"/>

        </intent-filter>
    </receiver>

【问题讨论】:

你有权限&lt;uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /&gt;吗? 【参考方案1】:

一开始这条线总是true

if (Intent.ACTION_BOOT_COMPLETED.equals("android.intent.action.BOOT_COMPLETED"))

应该是

if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction()))

进一步为接收者添加适当的权限

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

<receiver
    android:name=".StartActivityOnBootReceiver"
    android:permission="android.permission.RECEIVE_BOOT_COMPLETED"

您也可以尝试将声明的actions 拆分为三个分开的intent-filters,而不是保留一个数组

最后但并非最不重要的一点:启动 Android API 29 您无法从广播中启动 Activity,请查看 DOCs

简单,但恕我直言丑陋的解决方法是添加下一个权限

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

您的Activity 也将在 API 29+ 上启动

【讨论】:

以上是关于设备完成重启过程后如何启动我的应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

即使在重启设备后如何使警报启动?

Wear OS - 如何在设备重启时自动启动应用程序

iOS 设备重启后继续位置更新

设备重启后启动 Phonegap 插件

如何在 Windows 中以编程方式强制重启/重新加载 Playback 设备?

连接蓝牙设备时启动应用程序