在有人告诉我这无法做到之前,我已经对为什么进程不能相互干扰以及在什么条件下这是可能的进行了大量研究。我们的问题是设备之间的蓝牙支持不一致,某些设备上的解决方案是停止现有的蓝牙服务并运行一个单独的应用程序(BlueFTP),然后该应用程序能够侦听释放的端口并管理 OPP 通信。
android.permission.RESTART_PACKAGES
权限加号ActivityManager.restartPackage()
不起作用,因为它只是重新启动有问题的包。Process.killProcess
由于明显的原因不起作用(阅读 API)android.permission.KILL_BACKGROUND_PROCESSES
权限加号ActivityManager.killBackgroundProcesses()
被忽略,因为(我相信根据 API)蓝牙应用程序不被视为后台应用程序,因此没有资格被杀死。
目前,如果客户在使用特定手机时遇到问题,我们会让他们转到正在运行的应用程序并在刷新 BlueFTP 之前强制停止有问题的 OPP 服务,以便端口侦听器启动。违规服务有多个可能的名称,具体取决于手机和 Android 版本。
所以。该过程目前是手动的,但我希望有一种方法可以通过镜像设置中的强制停止选项的代码来实现。更轻松的选择可能是协助打开该服务的设置,而不是需要向客户解释如何到达那里,但如果有可用的完整解决方案,我更喜欢完整的解决方案。请注意,虽然我们的开发手机具有 root 访问权限,但客户端手机不会。