프로그래밍 방식으로을 수행해야하는 응용 프로그램을 만들어야합니다. 강제 종료 단추는 응용 프로그램에 적용됩니다. 이 코드 시도응용 프로그램을 프로그래밍 방식으로 강제 종료
(나는 루트 권한을 사용하고 있습니다),
private void killApp(){
try {
int pid = getPid(com.XXX);
if(pid != -1){
String command = "kill "+pid;
Log.i("Got PID",pid + "");
try {
Process suProcess = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(suProcess.getOutputStream());
os.writeBytes(command + "\n");
os.flush();
Log.i("Executed","Kill " + pid);
} catch (IOException e) {
// Handle error
}
} else {
Log.i("Not Found","App Not Found");
}
} catch (Exception e) {
e.printStackTrace(); // Device not rooted!
}
}
private int getPid(String packageName){
ActivityManager am = (ActivityManager)getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> pids = am.getRunningAppProcesses();
int processid = 0;
for(int i = 0; i < pids.size(); i++) {
ActivityManager.RunningAppProcessInfo info = pids.get(i);
Log.i("PID",pids.get(i) + "");
Log.i("PID Package",info.processName);
if(info.processName.equalsIgnoreCase(packageName)){
processid = info.pid;
return processid;
}
}
return -1;
}
을 그러나 문제는 프로세스가 발견되지 않는 것을에도 힘 정지 버튼 하지만이 회색으로 표시되지 않습니다. 심지어 사용
:
Process suProcess = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(suProcess.getOutputStream());
os.writeBytes("kill "+ APP_PID + "\n");
os.flush();
가 강제 정지 버튼 후이 코드를 강제 정지 버튼
을 실행 않기 때문에 일을하지 않습니다하지이 회색으로 표시됩니다.
루트 사용 앱 정보에서 강제 정지 버튼이 프로그래밍 방식으로 수행하는 방법은 무엇입니까?
Process suProcess = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(suProcess.getOutputStream());
os.writeBytes("adb shell" + "\n");
os.flush();
os.writeBytes("am force-stop com.xxxxxx" + "\n");
os.flush();
com.xxxxxx
가 힘을 응용 프로그램의 패키지 이름입니다
비 루트에 대한 해결책이 있습니까? –