我需要创建一个可以编程执行强制停止按钮对应用程序执行的操作的应用程序。(我正在使用root权限)
我试过这个代码:
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();
不执行强制停止按钮执行的操作,因为在我执行此代码后,强制停止按钮没有变灰。
使用root如何通过编程完成应用程序信息中强制停止按钮的功能?
4条答案
按热度按时间g0czyy6m1#
我找到了一个解决方案(需要根设备):
其中
com.xxxxxx
是要强制停止的应用程序的包名称。sulc1iza2#
您将变量
packageName
括在引号中if(info.processName.equalsIgnoreCase("packageName"))
将其替换为
if(info.processName.equalsIgnoreCase(packageName))
pcww981p3#
对于力
kill
,使用"kill -9"
因此将
String command = "kill "+pid;
替换为此外,在
os.flush();
行之后添加ql3eal8s4#
这个很好用。