2017-02-08 1 views
0

루트 액세스로 스크린 샷을 찍는 앱을 개발 중입니다. 나는 화면을 캡처하는이 호출을 사용하고 있습니다 :Android 스크린 샷 (ROOT)

"/system/bin/screencap -p " + getFilesDir() + "screen.png" 

을가 루트 컨텍스트에서이 스크린 샷을 만들고 나는 777와 대한 Chown USER_ID chmod를하는 경우에도 내 응용 프로그램에 액세스 할 수 없습니다 그러나 : USER_ID. SELinux는 여전히 scontext가 u:r:untrusted_app:s0이고 tcontext가 u:object_r:app_data_file:s0이기 때문에이 액세스가 거부되었다고 말합니다. 나는 --context u:r:untrusted_app:s0su 전화를 시도했지만 도움이되지 않았다.

정확한 화면 캡처 호출을 수행하여 앱 내부 저장소에 저장 한 다음 앱에 대한 액세스를 허용하는 방법에 대한 아이디어가 있으십니까?

답변

0

권한으로 인해 파일에 액세스 한 경우 명령의 -p <filename> 부분을 제거 할 수 있습니다. 이 경우 생성 된 이미지는 앱에서 확실히 액세스 할 수있는 stdout으로 파이프됩니다. ProcessInputStream에 연결하여 su 명령을 실행하고 데이터를 파일에 저장하거나 앱에서 사용하기 만하면됩니다.

여기에 표시된 경우 표준 출력을 읽는 방법이 예에서 아스 커 텍스트를 읽고 싶어 Read command output inside su process 참고, 따라서 허용 솔루션은 버퍼에 데이터를 읽고 String로 변환 - 당신이 변환이 필요하지 않습니다 물론 PNG 파일은 인쇄 가능한 문자열이 아니므로 ...