2017-11-28 24 views
0

안녕하세요, 저는 Android 7.1.1을 기반으로하는 루팅 된 휴대 전화를 가지고 있으며, 대화 상자 (다시 확인 또는 제거 확인)없이 앱을 제거하고 싶습니다. 내 응용 프로그램은 루트 권한이 있으며 시스템 응용 프로그램이기도합니다. 나는 "오후 제거"명령을 통해 쉘 명령을 사용하여 시도했지만 그것은 작동하지 않습니다ROOT - 프롬프트 대화 상자가없는 백그라운드에서 앱을 제거하십시오.

Runtime.getRuntime().exec("su pm uninstall " + packageName); 

나는 "알 수없는 ID : 오후 Magisk/E"를 얻었다. 나는 쉘 접두사 등으로 많은 다른 조합을 시도했지만 아무 것도. 루트는 매우 잘 작동하고 매니페스트 파일에는 "DELETE_PACKAGES"라는 파마를 넣습니다. PC를 통해 실행하면 같은 명령이 작동합니다.

대화 상자없이 앱을 제거하려면 어떻게해야합니까?

+1

'su'는 이러한 인수를 취하지 않습니다. 'su -c '시도해보십시오 ' – jackgu1988

+1

오 세상에 바보입니다. 고마워. 내 질문에 대답을하면 최상의 대답을 줄 수있다. – Smart

답변

1

대신 Runtime.getRuntime().exec("su pm uninstall " + packageName);의 당신이 -c을 추가 잊어 버린 당신의 코드에서

Runtime.getRuntime().exec("su -c 'pm uninstall " + packageName + "'");를 실행하려고, 그래서 pm uninstall [...]su 명령의 인수로 간주됩니다.

+1

나는 "best answer"라고 여기에서 약속했다. 다시 한 번 감사드립니다! – Smart

0

당신이 사용 DataOutputStream 정렬을 시도 할 수 :

 try 
     { 
      Process p = Runtime.getRuntime().exec("su"); 
      DataOutputStream os = new DataOutputStream(p.getOutputStream()); 
      os.writeBytes("pm uninstall " + packageName + "\n"); 
      os.writeBytes("exit\n"); 
      os.flush(); 

      p.waitFor(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } catch (InterruptedException e) 
     { 
      e.printStackTrace(); 
     }