您的位置:首页 > 移动开发 > Android开发

Android2.2 结束进程forceStopPackage()

2012-12-27 14:03 344 查看
做一个项目需要用应用程序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"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: