2013-02-07 5 views
5

/dev/tty * 파일의 권한을 변경해야 해당 포트에 데이터를 쓰고 있습니다. 나는 adb 셸을 root로 입력하여 windows 명령 프롬프트에서 권한을 변경할 수 있습니다.안드로이드에서 tty 포트의 권한 및 소유권을 프로그래밍 방식으로 변경하십시오.

그러나 장치를 다시 부팅하면 사용 권한이 유지되지 않습니다. 대신 기본값으로 설정됩니다.

그래서 재부팅 후 앱을 실행해야 할 때마다 권한을 변경해야합니다.

Runtime.exec() 메서드를 사용하여 응용 프로그램에서 adb 명령을 실행하려고했지만 응용 프로그램에 파일 소유권 사용 권한을 변경할 권한이 없으므로 아무런 변화가 없습니다.

이 (이 경우 에뮬레이터에서 테스트) 내가 응용 프로그램에서 명령을 실행하는 방법입니다 :

은 "SU"명령이 실행됩니다
Process process = Runtime.getRuntime().exec("su"); 
DataOutputStream os = new DataOutputStream(process.getOutputStream()); 
os.writeBytes("chown root:root /dev/ttyS0 \n"); 
os.writeBytes("chmod 777 /dev/ttyS0 \n"); 
os.writeBytes("exit\n"); 
os.flush(); 
os.close(); 
process.waitFor(); 

, 그것은에 오류를 그 때문에의 su: uid 10044 not allowed to su 을 제공합니다 chown 또는 chmod를 실행하면 오류가 발생합니다. Unable to chmod Operation Not permitted

그렇다면이 파일의 사용 권한과 소유권을 어떻게 변경합니까?

도움이 되었으면 좋겠습니다.

감사합니다.

+0

에뮬레이터 또는 장치? 그런 다음 장치가 뿌리를 냈는지 아닌지? 그리고''android app''에서''adb 루트 '를 프로그래밍 방식으로 실행한다는 것은 무슨 뜻입니까? – Shaiful

+0

그것은 장치에 있습니다. 명령 프롬프트를 통해/dev/tty * 파일의 권한을 변경하려면 adb 루트 명령 즉, adb가 root로 실행되어야합니다. 그것은 내가 허가 –

+0

을 바꿀 수 없게하고 나는 명령 프롬프트를 통해 허가를 바꿀 수있다. 그러나 나는 코드를 통해 비슷한 과정을 원한다. –

답변

1

기본값 (Google 제공) su 바이너리 검사 UID과 함께 실행됩니다. 오직 rootshell 사용자 만 su을 실행할 수 있습니다. 을 확인하지 않은 패치 된 su 패치를 설치하지 않으면 응용 프로그램에서 su을 실행할 수 없습니다.

모든 것을 adb root 명령은 장치에서 다음 명령을 실행하지 :

setprop service.adb.root 1 
stop adbd 
start adbd 

하지만 난 당신이 여기에 잘못된 질문을하는 것을 긍정적입니다. su 명령이 사용자의 목적에 부합하지 않을 이유가 없습니다. 사용자가 TTY 장치 사용 권한을 변경하도록 실행되어야

명령은 :

Runtime.getRuntime().exec("su root chmod 777 /dev/ttyS0"); 

안드로이드에서 . 대신 :chown 명령 사용자 및 그룹의 필드 사이에 구분자로서 사용된다. 올바른 명령은 다음과 같습니다.

su root chown root.root /dev/ttyS0 
+0

나는 질문을 업데이 트했습니다 .. 당신이 그것을 확인하시기 바랍니다 수 있습니까? –

관련 문제