android - 如何避免三星设备的电池优化? (S6、S7 和 S8)

标签 android push-notification samsung-mobile location-services doze

我有一个 GPS 跟踪 Android 应用程序,当有人需要用户的位置时,它会接收连续的推送消息。

每次我收到推送,我都会启动位置服务,在他收到推送消息的X时间内发送位置。

问题始于阻止 http 请求的 android Doze 系统。我可以接收消息,但我永远无法发送我当前的位置(我收到了 http 连接超时和 ping 到谷歌的错误)。但我可以通过 ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 请求并以编程方式将应用程序添加到电池白名单中来解决它。

现在,该应用程序可以在所有设备上正常运行,除了 S6 上的三星设备,它们具有“智能管理器”系统。我尝试手动将应用程序添加到三星的电池白名单(设置 -> 设备维护 -> 电池 -> 不受监控的应用程序),但问题仍然存在。

如果我让设备保持关闭屏幕且不充电,一段时间后,它会停止发送位置信息,但他仍然会收到推送消息。

谁能帮我解决一个神奇的问题?我看到一个所谓的“软件包列表”,其中有很多三星自动包含在白名单中的应用程序(例如 Facebook、Whatsapp、Life360),但我找不到将我的应用程序自动添加到此列表中所需的操作。

最佳答案

根据@ManmeetP 提供的链接,您唯一的选择似乎是使用三星的“Knox”SDK:ApplicationPolicy.addPackageToBatteryOptimizationWhiteList()

https://seap.samsung.com/api-references/android-standard/reference/android/app/enterprise/ApplicationPolicy.html

这意味着为所有用户将该 SDK bundle 到您的应用中 =(

关于android - 如何避免三星设备的电池优化? (S6、S7 和 S8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45592275/

相关文章:

java - 如何在主 UI 线程之外运行 TimerTask?

android - 奇怪的崩溃只影响华为设备 - Android 10 - android.view.InflateException

java - Android Eddystone广播数据太大

email - 网站或服务器停机通知工具

android - 通知消息仅在设备连接到 USB 时显示

android - 如何通过 Biometric api 查看用户的 Bio-Metric Preference?

android - 哪些型号的三星智能手机的 html5 输入类型 ="number"缺少句点?

java.io.IOException : HTTP request failed, HTTP 状态:500 在 android 中使用 WCF for android

ios - 每天不同时间本地通知

android - PushBots 应用程序崩溃