Android studio Android后台服务正在运行,但在重新启动应用程序时,即使在实现broadcastreceiver后也不会启动

Android studio Android后台服务正在运行,但在重新启动应用程序时,即使在实现broadcastreceiver后也不会启动,android-studio,android-intent,broadcastreceiver,android-service,Android Studio,Android Intent,Broadcastreceiver,Android Service,我已经设置了一个广播接收器,以便在开机时启动服务 接收人已在舱单中注册 <receiver android:name=".Receiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </inten

我已经设置了一个广播接收器,以便在开机时启动服务

接收人已在舱单中注册

<receiver android:name=".Receiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>
但当我重新启动设备时, 我在logcat中看到,android.intent.action.BOOT_COMPLETED是用标志_EXCLUDE_STOPPED_PACKAGES启动的。。。 这导致我的应用程序无法接收启动完成意图

我使用的是OPPO A71,使用的是安卓7.1 以及使用安卓6.0.1的redmi 4a

免责声明:相同的代码在emulator上工作得非常完美。
在emulator中,引导完成的意图没有使用任何标志触发…

引导广播的正确
“android.intent.action.BOOT\u COMPLETED”
,而不是
“android.intent.action.SIM\u STATE\u CHANGED”
。实际上,我尝试了这两种意图,只是为了弄清楚它是否工作。。。但是这两次如果意图不是用标志激发的,它都会工作,但是如果用标志_EXCLUDE _STOPPED _PACKAGES激发的,它就不工作了……是的,这是预期的行为。为什么你的应用程序停止了?你是不是用手强行停止的?你在重新启动之前从未启动过它吗?当我重新启动手机时,我的应用程序是打开的。当我使用命令重新启动手机时,我正在启动我的应用程序。这些特定的制造商可能有一些额外的设置,默认情况下不允许应用程序在启动时启动或在后台运行。尝试查看设备设置,或者其他与安全相关的独立应用程序中的某些设置。我看看能不能找到一些相关信息。
package com.rebootandroid.reboot;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationManagerCompat;
import android.util.Log;

import java.util.Set;

public class Receiver extends BroadcastReceiver {

    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        Log.i("Booted", "true");
        Log.i("action", action);

        NotificationCompat.Builder b = new NotificationCompat.Builder(context.getApplicationContext(), "defautl")
                .setAutoCancel(true)
                .setSmallIcon(R.mipmap.ic_launcher_round)
                .setContentTitle("Boot Intent Received")
                .setContentText("App starting....");
        NotificationManagerCompat nmc = NotificationManagerCompat.from(context.getApplicationContext());
        nmc.notify(111111111, b.build());

        Intent inTent = new Intent(context.getApplicationContext(), RebootService.class);
        inTent.putExtra(RebootService.INTENT_EXTRA, "RECEIVER_CLASS");
        context.getApplicationContext().startService(inTent);
    }
}