小编jer*_*cob的帖子

Android 12 - 前台服务启动限制

我正在开发一个SDK,需要从后台启动Foreground服务。因为它使用的是后台定位和蓝牙相关的作品。如果应用程序被终止,监控将在后台执行。这就是我使用前台服务的原因。有一个条件是从后台启动前台服务。

目前,我的 SDK 使用Service来处理这项工作。但Android 12上不支持从后台启动服务。

我试图从后台启动服务,下面的异常抛出。

ForegroundServiceStartNotAllowedException: Service.startForeground() not allowed due to mAllowStartForeground false
Run Code Online (Sandbox Code Playgroud)

我如何使用WorkManager 来解决这个问题,我的所有处理都是由 Service 类完成的,如何将 Service 对象传递给Worker类并在 Worker 类中启动此作业。

实际上,我的项目是基于信标技术的。信标信号用于向用户显示不同的推荐。

在我当前的实现中,如果应用程序被用户杀死,并且还接受前台服务,则SDK将在后台运行。并检测信标并提供适当的操作。

我的实现是,如果应用程序使用前台服务“关闭”来初始化我的 SDK,那么稍后,当应用程序位于后台并尝试从后台启动前台服务时,会抛出此异常。与前台服务相关的决策由服务器端 API 持有。我定期检查服务器端值是否更改,如果值更改,则更改后的操作会反映在 SDK 中。

android android-service foregroundnotification android-workmanager android-12

24
推荐指数
2
解决办法
3万
查看次数

Android 12 - 通知蹦床限制

由于 android 12, 通知蹦床限制导致我的项目出现一个大问题。我开发了一个 SDK,用于显示本地通知。我的问题是我使用通知是为了显示横幅或在应用程序内打开 Web 视图。对于通知蹦床限制,我需要使用待定意图指定通知单击事件。我的问题是,从 SDK 端,我找到应用程序包 ID 并启动 MainActivity,每次我点击通知时,即使应用程序位于后台或前台,应用程序也会重新启动。

我需要了解以下信息

  1. 我如何知道应用程序何时在前台或后台处于活动状态
  2. 如果存在需要知道哪个活动位于堆栈顶部

您是否遇到过相同或类似的问题?你是怎么解决的?任何帮助将不胜感激。谢谢你!

sdk android push-notification android-notifications android-12

3
推荐指数
1
解决办法
4547
查看次数