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);
}
}