마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 소스에서 shell 명령어 실행이 안됩니다..

0 추천

명령창말고 안드로이드 소스에서 shell명령어를 쓰고자 하는데 안먹히네요..

시도하고자 하는 것은 특정 패키지명을 얻어와 앱을 강제 종료하는 것입니다.

아래소스처럼 했는데 먹히지가 않네요.. 원인이 뭘까요?

 

Runtime runtime = Runtime.getRuntime(); 

        Process process = null; 

        try { 

                String cmd = "am force-stop 패키지명"; 

                process = runtime.exec(cmd); 

        } catch (Exception e) { 

                e.fillInStackTrace(); 

                Log.e("Process Manager", "Unable to execute top command"); 

        }



출처: http://mobileandlife.tistory.com/entry/안드로이드-소스에서-shell-명령어-실행하기 [모바일 보물창고]

핸디 (1,760 포인트) 님이 2017년 1월 26일 질문

1개의 답변

0 추천
 
채택된 답변
시스템 권한 문제일 겁니다.

런타임에서 실제로 먹히는 명령어도 있지만 막혀 있는 명령어도 있습니다.

adb 를 통한 연결이 root 는 아니지만 일반 어플리케이션 유저보다는 권한이 높은것으로 알고 있습니다.

그렇기에 adb 쉘 입력으로 동작하는 명령이 어플리케이션 런타임에서는 동작하지 않을수가 있는것이지요.

 

제 생각인데 위의 명령어는 다른 어플리케이션 동작을 침해할 우려가 있기에 구글에서 그냥 두지는 않았을것 같네요.
Development Guy (69,670 포인트) 님이 2017년 1월 26일 답변
핸디님이 2017년 1월 26일 채택됨
답변 감사합니다!
그러면 특정 권한을 부여해서 작동할 수는 없을까요?
디바이스 루팅을 하면 가능합니다.
...