안드로이드 개발 질문/답변
(글 수 45,052)
원래는 루팅한 폰이지 체크하는 방법으로
try {
Runtime.getRuntime().exec("su");
//Log.i("루팅체크","루팅폰");
check_root = true;
} catch ( Exception e) {
//Log.i("루팅체크","언루팅폰");
check_root = false;
}
이방법을 사용하고 있습니다.
하지만 저방법을 사용하면 루팅한 폰에서 슈퍼유저 권한을 수락하겟냐는 팝업이 뜨더군요
루팅한 사용자들이 이 팝업이 뜨는 것을 별로 좋게 생각하지 않는것 같습니다.
그래서 슈퍼유저 권한을 수락하겟냐는 팝업이 뜨지 않고 루팅한 유저인지
정상 사용 유저인지 그냥 조용히 체크하고 넘어가는 방법은 없을까요?
2012.07.02 17:11:46
물론봤고
똑같은 코드를 사용해 봤습니다.
제가 원하는건은 루트권한체크를 할 때 슈퍼유저에서 띄워주는 팝업을 띄우지 않고 하는 방법입니다.
저 링크에 나와있는 똑같은 방식으로하면 결국엔 처음4줄이 제가 사용하는 코드랑 같습니다.
그래서 4줄을 빼고 아래에 파일체크하는 부분만 사용해보면 루팅한 폰에서 루팅체크가되지 않습니다.
2012.07.02 17:36:30
루팅이 체크가 안된다는게
Log.d("test", "isRootingFlag = " + isRootingFlag);
에서 True or False 가 안나온다는 건가요?
제가 루팅폰이 없어서...
님께서 쓰신 그 코드 4줄 지우고 4가지 파일만 체크 해보면
갤스1(진저), 갤스2(아이스) 로 해본 결과(순정) False가 찍히거든요...
루팅의 경우 True 가 찍고 화면에서 팝업도 같이 나오나요???
팝업이 안나오고 True만 디버그에 찍힌다면
True 값보고 어플이 실행 안되게 죽여 버림 될텐데 'ㅅ ';;
2012.07.02 17:37:44
su 명령을 실행했을 때 팝업을 띄워서 사용자 동의를 구하는 건 당연한 겁니다.
이걸 우회하는 방법이 생기면 안드로이드쪽은 불지옥이 될겁니다.
링크를 타고 가서 내용을 보니 su 바이너리가 있는지 검사하는 디렉토리가 4군데인데,
폰에 따라 다른 곳에 있을 수도 있습니다.
PATH 환경변수를 읽어서 각 디렉토리에 su 바이너리가 있는지 검사하는 식으로 하면 될 것 같습니다.




기존에도 비슷한 질문이 올라 왔는데 검색은 해보셨나요 'ㅅ '?
http://www.androidpub.com/2107391
여기에 들어가셔서 yamigo님 리플에 링크 타고 들어가보세요 'ㅅ '