android 杀进程方法
关闭应用的方法:
1.System.exit(0);
2.android.os.Process.killProcess(android.os.Process.myPid()); ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
3. am.killBackgroundProcesses("packagename");
4. am.restartPackage("packagename"); 以上方法貌似只能退出本身应用。
强退其他应用: 利用shell 下面的的kill命令来杀掉进程从而达到退出应用的效果。kill processid; 此命令需要root权限执行 直接上代码
1.ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> infos = am.getRunningAppProcesses();
for(RunningAppProcessInfo info : infos){
Log.i("---",info.processName);
if("com.test.br2".equals(info.processName)){
Log.i(TAG, info.processName+"---"+info.pid);
//Process.killProcess(info.pid);
killProcess(info.pid);
break;
}
}
2. killProcess1("packageName");
private void killProcess(int processId){
java.lang.Process process = null;
try {
process = Runtime.getRuntime().exec("su");
OutputStream os = process.getOutputStream();
os.write(("kill "+processId).getBytes());
os.flush();
os.close();
Thread.sleep(3000) //这里的sleep的目的让上面的kill命令执行完成
} catch (IOException ex) {
Log.e(TAG, "" + ex.getStackTrace());
}finally{
if(process!=null){
process.destroy();
process =null;
}
}
}
private void killProcess1(String packageName) {
Log.i(TAG, "killProcess");
java.lang.Process process = null;
try {
String processId = "";
process = Runtime.getRuntime().exec("su");
OutputStream os = process.getOutputStream();
os.write("ps \n".getBytes());
os.flush();
BufferedReader br = new BufferedReader(new InputStreamReader(process
.getInputStream()));
String inline;
while ((inline = br.readLine()) != null) {
if (inline.contains(packageName)) {
Log.i(TAG, "" + inline);
StringTokenizer processInfoTokenizer = new StringTokenizer(inline);
int count = 0;
while (processInfoTokenizer.hasMoreTokens()) {
count++;
processId = processInfoTokenizer.nextToken();
if (count == 2) {
break;
}
}
Log.i(TAG, "kill process : " + processId);
os.write(("kill " + processId).getBytes());
os.flush();
if(os!=null){
os.close();
os =null;
}
br.close();
return;
}
}
} catch (IOException ex) {
Log.e(TAG, "" + ex.getStackTrace());
}finally{
if(process!=null){
process.destroy();
process =null;
}
}
}
更多相关文章
- 【Android】【应用信息】获取服务列表
- Android(安卓)再按一次退出应用
- Android重启应用程序代码
- 多个Android(安卓)device offline处理命令
- Android(安卓)8.0系统 默认赋予应用权限
- android 如何判断当前进程在主页面
- Android(安卓)O(android 8.1) SYSTEM_UID应用无法使用FileProvider
- Android(安卓)关闭所有Activity完全退出程序方法
- android卸载应用的进度条