2012-06-24 5 views
1

우선 제 상황을 제시하고 싶습니다. Runtime.getRuntime().exec(...)을 사용하여 다양한 셸 명령을 전달하는 커널 트로커를 만들고 있는데, 제대로 작동하지만 문제는 su 권한이 실행될 때마다 묻는 것입니다 su 명령어가 포함 된 쉘 명령어.su 권한이 여러 번 묻습니다

나는 한 번만 권한을 요청한 다음 다시 su를 묻지 않고 모든 명령을 실행하기를 원합니다. 현재 내 응용 프로그램은 su 명령을 사용하여 약 30 행을 가지므로 내 응용 프로그램 사용자는 모든 작업을 수행하기 위해 su 액세스를 30 번 허용해야합니다.

+0

SU로 응용 프로그램을 실행할 수 없습니까? 그리고 그것없이 명령을 실행합니까? –

+0

"sudo"또는 다른 해결책에 대해 알려주는 "superuser.com"친구들을 찾으십시오. 그러나 그것은 주제에서 벗어난 것입니다. –

+1

실제로 안드로이드 응용 프로그램이 루트로 하위 프로세스를 실행할 수있게하는 사용자 지정 롬에서 도구를 사용하는 것에 관한 질문이므로 실제로는 주제가 아닙니다. 응용 프로그램 자체는 결코 exec()가 아니기 때문에 루트로 실행할 수 없습니다. 대신 시스템 전체 zygote 프로세스를 포크하고 응용 프로그램을 구성하는 공유 라이브러리를로드하여 특수화합니다. –

답변

0

비동기 작업에서 내 루트 호출에 대해 동일한 인터페이스를 사용하여이 문제를 해결했습니다. 처음에는 조각에서 필요에 따라 개별적으로 메소드를 사용했기 때문에 반복적으로 요청 된 권한이있었습니다. 그런 다음 한 가지 표준 exec 방법으로 변경하고 매번 시스템 호출을하기 위해이를 사용합니다. 오류가 수정되었습니다.

2

su를 사용하여 쉘을 실행하고 다양한 명령을 원하는 루트 쉘 프로세스의 표준 입력으로 파이프하는 것이 한 가지 방법입니다. 이것은 su가 한 번만 사용됨을 의미합니다.

이렇게하기위한 코드는 su 명령 줄에서 전달할 수없는 인수를 사용하여 명령을 실행하려는 사람들의 컨텍스트에서 여러 번 다루어 졌으므로 대신 결과 프로세스로 파이프되어야합니다.

+0

나는 그것을 해결했다. ..! 어떤 방법으로 고마워요 : D – user1478070

+0

그래서 어떻게 해결 했습니까? 다른 사람들이 그것에 대해 배울 수 있도록 답을 게시하십시오. – JPM