【问题标题】:startForegroundService() does not start service on 2 Samsung devicesstartForegroundService() 未在 2 台三星设备上启动服务
【发布时间】:2022-01-21 07:01:48
【问题描述】:

现在启动此服务的代码如下所示

if (!BuildConfig.MSG_ALLOWED && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
  Log.v("Foreground SmsService Launch");
  context.startForegroundService(intent);
} else {
  Log.v("Regular SmsService Launch");
  context.startService(intent);
}

不幸的是,日志语句没有包含在我的两个用户正在使用的版本中,但间接证据非常令人信服,表明满足适当的条件来进行 startForegroundService() 调用。对于大多数用户来说,这可以正常工作,但对于这两个用户来说,请求的服务永远不会启动。没有抛出异常,系统日志报告

W ActivityManager:不允许后台启动:服务 Intent { act=net.anei.cadpage.Telephony.SMS_RECEIVED flg=0x19000010 cmp=net.anei.cadpage/.SmsService (has extras) } 到 net.anei.cadpage/ .SmsService from pid=10201 uid=10234 pkg=net.anei.cadpage startFg?=true

这两个用户都在三星设备上运行 Android 9,这开始看起来很可疑。关于我可以做些什么来解决问题的任何建议?

由于有人可能会问我为什么要从后台接收器启动前台服务,答案是我正在处理传入的文本消息,该消息通常不受这些后台服务启动限制的影响。但是 Android 系统不知道我正在处理传入的短信,因为不允许通过 Play 商店分发的常规应用程序这样做。我的用户必须侧载一个辅助应用来监控传入的短信并将它们传递给常规应用。

【问题讨论】:

  • 您的目标版本是什么?如果您的目标版本号太高,则不允许从后台启动前台服务,包括广播接收器。而且我不希望它在未来变得更加宽容。听起来你正在做一些不应该做的事情,除非它是一个私人应用程序。在可能的情况下,请参阅developer.android.com/guide/components/…

标签: android service startforegroundservice


【解决方案1】:

an issue on android 9 正在启动前台服务。
如果活动没有完全恢复,startForegroundService 会抛出异常。
为确保您可以启动前台服务,您需要检查您的应用是否具有IMPORTANCE_FOREGROUND 重要性,然后才启动该服务,否则将其推迟。

【讨论】:

  • 听起来不像这里发生的事情。呼叫是从广播接收器发出的,而不是处于非活动状态。并且调用没有崩溃或抛出异常,它只是没有启动服务
猜你喜欢
  • 1970-01-01
  • 2020-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-06
  • 1970-01-01
  • 1970-01-01
  • 2013-07-16
相关资源
最近更新 更多