【发布时间】:2018-11-28 22:21:41
【问题描述】:
我正在尝试在我的设备启动时启动一项服务,但该服务从未启动。
我已添加:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
到 AndroidManifest.xml。我的 BroadcastReceiver 如下所示:
[BroadcastReceiver]
[IntentFilter(new[] { Intent.ActionBootCompleted })]
public class BootReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
var start = new Intent(context, typeof(AlertSyncService));
start.AddFlags(ActivityFlags.NewTask);
context.StartService(start);
}
}
我已经确认我的服务不是问题(通过单击按钮启动相同的服务进行测试 - 它工作正常)。问题肯定是 BroadcastReceiver 永远不会收到事件。我还确保在重新启动之前打开应用程序一次 - 我在类似的问题中看到这是必要的,因为应用程序安装在“停止状态”。
有没有人知道是什么导致这不起作用?我对此比较陌生,所以很可能我错过了一些明显的东西!
谢谢
【问题讨论】:
-
我的头顶没有看到
logcat输出:[BroadcastReceiver(Enabled = true)]查看此答案的测试(通过adb)部分:stackoverflow.com/a/47601952/4984832 -
@SushiHangover 我已经完成了 adb 测试,并认为这是问题所在:
java.lang.RuntimeException: Unable to start receiver md527b6cae80f13bfed8573ffa181fefc60.BootReceiver: java.lang.IllegalStateException: Not allowed to start service Intent { flg=0x10000000 cmp=MyApp.MyApp/md527b6cae80f13bfed8573ffa181fefc60.AlertSyncService }: app is in background uid UidRecord{6ef4e91 u0a6 ...但是,我不知道如何解决这个问题!有任何想法吗?我试过用ContextCompat.StartForegroundService(...)运行它,但这有同样的问题。
标签: c# android xamarin android-intent broadcastreceiver