关闭应用的方法:

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;
}
}
}

更多相关文章

  1. 【Android】【应用信息】获取服务列表
  2. Android(安卓)再按一次退出应用
  3. Android重启应用程序代码
  4. 多个Android(安卓)device offline处理命令
  5. Android(安卓)8.0系统 默认赋予应用权限
  6. android 如何判断当前进程在主页面
  7. Android(安卓)O(android 8.1) SYSTEM_UID应用无法使用FileProvider
  8. Android(安卓)关闭所有Activity完全退出程序方法
  9. android卸载应用的进度条

随机推荐

  1. Android Kotlin开发之Hello World
  2. Android 的 JNI 和 NDK开发
  3. 十一、Android坐标系
  4. android读取sqlite数据库的数据并用listv
  5. 浅谈Android 事件分发机制(一)
  6. 从HandlerThread 的使用来分析HandlerThr
  7. Android:退出程序后保持Serivce开启不关
  8. 在android上使用valgrind检测内存泄漏
  9. Android源码repo init及repo sync小记
  10. 手动滑动TextView超出的内容