Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android O取代getRunningServices_Android_Android Service - Fatal编程技术网

Android O取代getRunningServices

Android O取代getRunningServices,android,android-service,Android,Android Service,在以前的Android版本中,我使用此方法来查找来自另一个应用程序的服务是否已启动并正在运行。这对我来说是可靠的: ActivityManager manager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); List<RunningServiceInfo> services = manager.getRunningServices(Integer.MAX_VALUE); ActivityManager

在以前的Android版本中,我使用此方法来查找来自另一个应用程序的服务是否已启动并正在运行。这对我来说是可靠的:

ActivityManager manager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<RunningServiceInfo> services = manager.getRunningServices(Integer.MAX_VALUE);
ActivityManager=(ActivityManager)getSystemService(Context.ACTIVITY_服务);
List services=manager.getRunningServices(Integer.MAX_值);
然而,对于Android O,它现在已经被弃用,只会返回有关调用应用程序服务的信息。我已经研究了其他解决方案,但我不想要求用户获得更多权限(usagestastmanager、NotificationManager等)

是否有其他解决方案可用于获取来自不同应用程序的服务是否在Android O中运行?

根据文档:

As of O, this method is no longer available to third party applications.
For backwards compatibility, it will still return the caller's own services.

但是,这个解决方案可能会有所帮助:

故意不更换此功能。文件中的内容不太清楚,但:

注意:此方法仅用于调试或实现服务管理类型的用户界面

基本上,使用该方法检查其他应用程序服务是一种意外的副作用,因此谷歌决定将其删除。可能出于隐私/安全目的,以避免应用程序“嗅探”用户设备上的其他应用程序/服务


您没有提到您的用例,但您希望避免向用户请求权限。然而,谷歌故意强迫开发者明确要求他们所需的权限,这一理念你可以找到解释。

我对此表示怀疑。谷歌特别想让用户知道,如果你有权访问这类信息,你可以(通过其他权限)访问它。这就是我担心的。Android似乎正在锁定这种类型的交互,使应用程序更加孤立(未经用户同意)。这对用户来说是好的,但对开发人员来说不是很有趣。这是我正在寻找的一个特定的用例,我需要这个功能。我不需要该服务正在运行,但需要知道它是否正在运行。可以将其用于自动测试。是否有任何解决方案用于上述问题?请帮助美赞克斯,是的,我阅读了文档,这就是为什么我特别要求更换。问题还指出,它必须返回来自不同应用程序的服务状态,因此按照链接解决方案的建议创建静态变量将不起作用。不过,感谢您的评论,在最初的问题发布近3年后,我认为可以肯定地说,当时没有其他选择,也没有引入任何选择。这就是为什么我留下了一条评论,以便任何寻求答案的人都不会悬而未决。。