在有人告诉我无法做到这一点之前,我已经做了很多关于为什么过程不能互相干扰以及在什么条件下可以做到这一点的研究。我们的问题是设备之间的蓝牙支持不一致,并且某些设备上的解决方案是停止现有的蓝牙服务并运行单独的应用程序(BlueFTP),然后该应用程序能够侦听释放的端口并管理OPP通信。
android.permission.RESTART_PACKAGES
权限加ActivityManager.restartPackage()
不起作用,因为它只是重新启动违规包。Process.killProcess
因显而易见的原因(阅读API)不起作用android.permission.KILL_BACKGROUND_PROCESSES
权限加ActivityManager.killBackgroundProcesses()
被忽略,因为(我相信根据API)蓝牙应用不被视为后台应用,因此无法被杀。目前,如果客户端遇到特定手机的问题,我们会让他们转到正在运行的应用程序,并在刷新BlueFTP之前强制停止违规的OPP服务,以便启动端口侦听器。违规服务有多个可能的名称,具体取决于手机和Android版本。
因此。这个过程目前是手动的,但我希望有一种方法可以通过代码镜像设置中的强制停止选项来实现这一目的。一个较轻的选项可能是帮助打开该服务的设置,而不是需要向客户解释如何到达那里,但我更喜欢一个完整的解决方案,如果有一个。 请注意,虽然我们的开发电话具有root访问权限,但客户端电话却不会。
答案 0 :(得分:1)
您可以在其他应用中使用隐式意图来关闭它们。除非您的服务强制授予其访问权限,否则它也不需要额外的权限。
哦,我忽略了它是第三方应用程序的事实。在那种情况下,你真的不能做太多。遗憾。