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



我已经创建了一个应用程序,我想在设备重启后打开它,我正在使用广播接收器但不工作,我能做什么,任何替代解决方案。

我已经测试了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>

一开始这一行总是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+上启动

相关内容

  • 没有找到相关文章

最新更新