Android下强制关闭其他程序 静默安装

内容纲要

http://blog.csdn.net/dliyuedong/article/details/24448899

关于静默安装  http://blog.csdn.net/jiangwei0910410003/article/details/36427963

这几天一直在做一个Andorid应用,想实现任务管理器的效果,能够彻底关闭其他的程序,网上也看了很多资料,很多都是使用后restartPackage或者killBackgroundProcesses函数去进行,但是这一种并不能真正的将应用关闭.我的手机是root过的defy,尝试着使用其他的方法操作.

         ① kill -9  pid

            这个命令对于使用linux的都非常的熟悉,强制杀掉一个进程.获取要杀掉进程的pid,然后直接执行上述命令,但是测试后发现后,在手机中setting-app中,该应用依旧是运行状态,force close依旧可以点击,并没有达到效果.


       ②使用android自带命令(am force-stop)

            这个是查看adb帮助的时候发现的,原来adb的操作是相当的丰富的,不仅可以启动应用,发送广播,查看日志,还能对应用进行操作,比如强制关闭,十分的强大.根据这个,成功实现关闭其他应用的操作.  (adb介绍官方文档)

[java][/java] view plaincopy在CODE上查看代码片派生到我的代码片

  1. package cn.androiddevelop.flushapk.util;  

  2.   

  3. import java.io.IOException;  

  4. import java.io.OutputStream;  

  5.   

  6. /** 

  7.  * 执行android命令 

  8.  *  

  9.  * @author Yuedong Li 

  10.  *  

  11.  */  

  12. public class SuUtil {  

  13.   

  14.     private static Process process;  

  15.   

  16.     /** 

  17.      * 结束进程,执行操作调用即可 

  18.      */  

  19.     public static void kill(String packageName) {  

  20.         initProcess();  

  21.         killProcess(packageName);  

  22.         close();  

  23.     }  

  24.   

  25.     /** 

  26.      * 初始化进程 

  27.      */  

  28.     private static void initProcess() {  

  29.         if (process == null)  

  30.             try {  

  31.                 process = Runtime.getRuntime().exec("su");  

  32.             } catch (IOException e) {  

  33.                 e.printStackTrace();  

  34.             }  

  35.     }  

  36.   

  37.     /** 

  38.      * 结束进程 

  39.      */  

  40.     private static void killProcess(String packageName) {  

  41.         OutputStream out = process.getOutputStream();  

  42.         String cmd = "am force-stop " + packageName + " \n";  

  43.         try {  

  44.             out.write(cmd.getBytes());  

  45.             out.flush();  

  46.         } catch (IOException e) {  

  47.             e.printStackTrace();  

  48.         }  

  49.     }  

  50.   

  51.     /** 

  52.      * 关闭输出流 

  53.      */  

  54.     private static void close() {  

  55.         if (process != null)  

  56.             try {  

  57.                 process.getOutputStream().close();  

  58.                 process = null;  

  59.             } catch (IOException e) {  

  60.                 e.printStackTrace();  

  61.             }  

  62.     }  

  63. }  


转载请注明出处.

发表回复