Android 以编程方式强制关闭应用程序
我需要制作一个应用程序,该应用程序可以通过编程执行强制停止按钮对应用程序执行的操作。(我正在使用root权限) 我尝试过以下代码:Android 以编程方式强制关闭应用程序,android,shell,adb,root,su,Android,Shell,Adb,Root,Su,我需要制作一个应用程序,该应用程序可以通过编程执行强制停止按钮对应用程序执行的操作。(我正在使用root权限) 我尝试过以下代码: private void killApp(){ try { int pid = getPid(com.XXX); if(pid != -1){ String command = "kill "+pid; Log.i("Got PID",pid + "");
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;
}
不执行强制停止按钮所做的操作,因为在执行此代码后,强制停止按钮不会变灰
使用root如何以编程方式执行应用程序信息中的强制停止按钮所做的操作?您正在用引号括起变量
packageName
if(info.processName.equalsIgnoreCase(“packageName”))
如果(info.processName.equalsIgnoreCase(packageName))我找到了一个解决方案,请将其替换为if(info.processName.equalsIgnoreCase(packageName))
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
是要强制停止的应用程序的包名 对于强制杀伤
,使用“杀伤-9”
因此,替换String命令=“kill”+pid代码>带有
String command = "kill -9 "+pid;
另外,在os.flush()之后代码>行添加
os.close();
suProcess.waitFor();
这很有效。你是对的。我修复了这个bug,但我仍然无法强制停止使用ROOT的应用程序。你有没有非root的解决方案?@ dhanuk是的,它确实如此。
os.close();
suProcess.waitFor();
android.os.Process.killProcess(android.os.Process.myPid());