2011-03-11 6 views
3

뿌리 박힌 전화의/data 디렉토리에있는 파일을 프로그래밍 방식으로 읽고 쓰려고합니다. 내가 먼저 쉘을 실행su 내 프로그램이 잘 작동하는 슈퍼 유저 액세스를 얻는 지 확인하십시오.뿌리깊은 안드로이드 장치에서/데이터를 읽거나 쓰는 것

나는 읽기/내 프로그램 내에서 임원에게 쉘을 통해에/데이터 명령을 파일을 쓸 수 있어요,하지만 난 안드로이드 파일 또는 다른 API를 사용하는 경우 때 java.io.IOException "권한 거부"얻고있다.

API를 사용하여 루팅 된 휴대 전화에서 데이터를 읽거나 쓰려면 어떻게해야하나요? 이는 루트 탐색기와 같은 프로그램에서 가능하므로 분명히 가능합니다. 당신이 있는지 확인하기 위해 필요로하는

는 한마디로

Runtime.getRuntime().exec("chmod 077" +your_file_you_need_to_give_permission); 

답변

1

, 감사, 아니,이 엄격하게 API 년대를 통해 가능없는 당신의 수정 명령을 루트로 실행하거나 그렇지 않으면 OS가 해당 작업을 거부합니다.

변경 명령을 su 명령에 파이프하여 루트로 실행해야합니다.
그의 github에서 sample implementationShell 클래스를 사용하여 rm 명령 또는 다른 명령을 루트로 실행할 수 있습니다.

프로그래밍 방식으로 할 수있는 한 가지 방법은 편집하려는 파일을 임시 디렉토리 (예 : /sdcard/tmp.txt)로 복사하고 해당 파일을 편집 한 다음 원래 위치로 다시 복사하여 거기에 덮어 쓰는 것입니다.

또 다른 방법은 내용을 프로그래밍 방식으로 읽고 쓸 수 있도록 chmod 대상 파일 (예 : chmod 777 /data/xxx.txt)입니다. 따라서 프로그램에 다른 파일에 대한 액세스 권한이 없기 때문에 Permission denied 오류가 발생합니다. 여기서 핵심은 chmod 명령 자체가 su 명령에 파이프되어 THAT 명령이 거부되지 않도록해야한다는 것입니다. 아래 링크에서 안내서를 읽는 것이 좋습니다. 루트로 실행해야하는 상황에 어떻게 접근 할 수 있는지 매우 철저합니다.

출처 : 제안에 대한 How-To SU

+0

감사합니다,하지만 난 파일을 직접 chmod'ing없이 권한을 얻기 위해 선호로 그 부분 난 그냥 내 프로그램이 루트에 도움이하고 싶은, 문제를 해결할 것 다른 쉘 exec없이/data에있는 파일을 읽고 쓸 수있는 액세스 (su를 실행하는 쉘에 의해 주어진). –

+0

@ JS_ : 당신은 pls 정교 할 수 있습니까? 나는 너를 못 봤어. – Niki

+0

여기서 목표는 루트 액세스의 이점을 얻고 API가 기본적으로 데이터에 대한 읽기/쓰기 액세스를 사용하도록하는 것입니다. 당신이 제안한 해결책은 효과가 있을지 모르지만, 아마도 가장 좋은 해결책은 아닌 추가 쉘 exec에 의존합니다. 루트 탐색기 나 다른 프로그램이 사용하는 것처럼 정규 API를 통해 이상적으로 작동해야합니다. –

2

같은 라인을 추가 할 수 있습니다 코딩을 통해

+0

질문에 대답하지 않습니다. 파일에 액세스하려면 변경 권한을 변경하십시오. –

+0

답변이 수정되었습니다. 죄송합니다. 너무 많은 탭을 열었습니다. – cnexus

+0

아직도 아주 좋은 대답은 아닙니다. 개인적인 허가 비트가 권장하는 것보다 더 많은 것을 배우는 시간을 가지십시오. –

관련 문제