Android2.2 结束进程forceStopPackage()



做一个项目需要用应用程序A去结束应用程序B。在网上查到资料显示,在Android2.2之前使用ActivityManager.restartPackage()方法可以结束进程。在2.2之后需使用Activity.killBackgroundProcesses()方法。
但是经我试验证明,该方法只能重启应用程序,即真正的restartPackage,而不能达到结束进程的目的。
然后又在网上找到了ActivityManager.forceStopPackage()方法,但是该方法是系统隐藏方法,无法被正常调用的。在网上查到有两个办法可以调用,1.在源码下编译工程;2.使用Java反射调用。
我先采用在源码下编译工程的方法。估计是我的android.mk文件写的有问题。反正没有成功。
因此我改用了反射调用。但是改成反射之后我在模拟器中一直跑步起来,报错。丢在真机上反倒成功了,我觉得是因为我没有在本机上编译android,然后把镜像文件丢到模拟器中造成了。
反正成功了就好。一下是用java反射调用Android系统隐藏方法的方法,资料很据收藏价值喔。



 ActivityManager sd = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
Method method = Class.forName("android.app.ActivityManager").getMethod("forceStopPackage", String.class);
method.invoke(sd, "com.h3c.ServiceAuto");
   
记得加权限:  <uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"/>

你可能感兴趣的:(Android2.2 结束进程forceStopPackage())