【问题标题】:Is it possible to run ProcessBuilder from an Android Service?是否可以从 Android 服务运行 ProcessBuilder?
【发布时间】:2013-07-03 19:14:37
【问题描述】:

我遇到了非常奇怪的问题。 我有必须发送命令“input keyevent NUMBER”的服务。 我正在使用 ProcessBuilder 来启动它。奇怪的是 - 当我的 Activity(我用来启动服务的那个)处于活动状态时,会处理命令。但是,当 Activity 不在前台时,命令什么也不做!为什么会这样?

我正在考虑创建带有函数的 JNI 库,该函数调用类似于“系统(无论我想调用什么)”之类的东西。是正确的做法吗?

【问题讨论】:

  • 为什么要使用mkdirls的进程?你知道java有File#mkdir()File#listFiles()吗?
  • 我发送什么并不重要。实际上,我发送的是“input keyevent 87” - 这是切换到下一首歌曲(KeyEvent 方法不适用于所有玩家,仅适用于少数玩家)。
  • 一般来说,它确实很重要,因为如果你可以用java做一些事情,那么涉及一个进程是没有意义的。你应该在你的问题中写下真实的东西,更新它并将 "mkdir", "ls > /path/to/some/thing" 等替换为你想要发送的内容,否则其他用户可能会回答不需要使用进程。

标签: java android processbuilder


【解决方案1】:

问题不在于 ProcessBuilder。问题是我通过此服务附加到窗口的视图具有 FLAG_NOT_FOCUSABLE。因此,任何其他 shell 命令,如“mkdir”和“ls”都可以正常工作,而“input”只是因为视图没有焦点而被忽略。删除标志解决了问题。

【讨论】:

  • 我正在尝试使用 input keyevent 命令从前台服务单击相机按钮,但它不起作用。你知道原因吗?当我的应用程序(活动)在前台时,音量增大或减小有效,但在后台时无效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-12
相关资源
最近更新 更多