2013-07-03 2 views
0

매우 이상한 문제가 발생했습니다. "input keyevent NUMBER"명령을 보내야하는 서비스가 있습니다. ProcessBuilder를 사용하여 시작했습니다. 이상한 점은 - 나의 활동 (내가 서비스를 시작하는 데 사용하는 활동)이 활성화되면 명령이 처리된다는 것입니다. Hovewer, 활동이 포 그라운드에 있지 않을 때, 명령은 아무 것도하지 않습니다! 왜 그런가요?Android 서비스에서 ProcessBuilder를 실행할 수 있습니까?

"시스템 (내가 무엇을 부를까)"과 같은 함수를 호출하는 JNI 라이브러리를 만드는 것에 대해 생각하고 있습니다. 올바른 접근 방법입니까?

+0

왜 프로세스를'mkdir'과'ls'로 사용합니까? java가 [File # mkdir()] (http://developer.android.com/reference/java/io/File.html#mkdir()) 및 [File # listFiles()] (http : // developer.android.com/reference/java/io/File.html#listFiles())? – BackSlash

+0

내가 보내는 것은 중요하지 않습니다. 사실, "input keyevent 87"을 보내고 있습니다 - 이것은 다음 곡으로 전환하는 것입니다 (KeyEvent 메서드는 일부 플레이어에서만 작동합니다). –

+0

일반적으로 ** 문제가 있습니다. java로 무언가를 할 수 있다면 프로세스를 포함하는 것이 의미가 없기 때문입니다. 질문에 실제 내용을 적어두고 업데이트하고 _ "mkdir", "ls>/path/to/some/thing"등을 보내려는 내용으로 바꾸어야합니다. 그렇지 않으면 다른 사용자가 필요 없다고 대답 할 수 있습니다 프로세스를 사용합니다. – BackSlash

답변

0

문제는 ProcessBuilder에서 발생하지 않았습니다. 문제는이 서비스에 의해 창에 붙어있는 뷰가 FLAG_NOT_FOCUSABLE을 가졌다는 것입니다. 따라서 "mkdir"과 "ls"와 같은 다른 쉘 명령은 올바르게 작동하고 뷰에 포커스가 없기 때문에 "input"은 무시됩니다. 국기를 제거하면 문제가 해결되었습니다.

관련 문제