其他分享
首页 > 其他分享> > 在Android上始终以root用户身份在后台运行服务

在Android上始终以root用户身份在后台运行服务

作者:互联网

根据Android Oreo之后的this thread,Google引入了一些后台限制,因此无法始终在后台运行Service而不显示用户通知.

可以使用root特权来实现吗?

编辑:我看到人们投票结束我的问题,因为它看起来似乎太广泛了,但是我正在运行LineageOS,如果可能的话,我想将我的应用程序作为系统服务运行,我认为这将是在不修改源代码的情况下可行.例如,在安装操作系统时,我可以刷新GApp,但是它是可选的,并且它们似乎具有我在说的功能.我也不希望您为我做所有的研究,我愿意接受为我指明正确方向的答案.

解决方法:

确实有一个未记录的shell命令,可以通过将其添加到全局location_background_throttle_package_whitelist(我尚未对其进行测试)来将其列入白名单.

settings put global location_background_throttle_package_whitelist "package1,package2,package3"

^这是用于定位服务的,但可能还有更多的background_throttle设置可用:

settings list global | grep background_throttle

资料来源:XDA Developers.

同样在source code中,我仅找到以下设置:

Settings.Global.LOCATION_BACKGROUND_THROTTLE_PACKAGE_WHITELIST
Settings.Global.LOCATION_BACKGROUND_THROTTLE_PROXIMITY_ALERT_INTERVAL_MS
Settings.Global.LOCATION_BACKGROUND_THROTTLE_INTERVAL_MS

documentation明确表明某些服务已添加到临时白名单中.为了找出实际上将这些服务列入白名单的内容,必须进一步挖掘.这些后台服务限制实际上是在Context.java中描述的,而用@UnsupportedAppUsage注释的方法是仅系统使用的方法.

Firebase WorkManager仍然是最好的选择-或底层的JobIntentService仍将作为常规后台服务运行< AndroidO.刷新Android N或Lineage OS 14.1将是一种解决方法,几乎​​没有考虑过. root权限将提供超级权限的假设可能是一个误解.允许不受限制的位置访问仍然非常有限,甚至Google自己的服务也只是暂时列入白名单.被这些后台执行限制排除的唯一服务将是用C编写的Linux system services(在JVM外部运行)-这与用Java编写的Android后台服务(在JVM内部运行,以及所有扩展相同的受限Service类).

标签:android-service,background-process,root,android,android-8-0-oreo
来源: https://codeday.me/bug/20191024/1922668.html