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

android设置--》应用程序详细信息--》强制停止

2013-07-14 10:49 477 查看
我的samsung9100每天早上电池都会耗尽。经常打开网易云阅读,墨迹天气之类的应用。怀疑是点击返回并没真正退出,就到设置--》应用管理--》正在运行查看。果然这些应用还在,选择停止后过会又会出现。正在运行界面右上面有个“显示缓存进程”标签,点击停止应用,过会程序还是会出现。于是到应用程序详细信息里点击强制停止,正在运行和显示缓存列表里再也未出现。即使重启机器,也不会出现。

到酷安市场下了些查杀进程的软件,比如Advanced TaskManager,Advanced Task Killer Pro,Zapper Task Killer等。结束进程后应用程序的“强制停止”按钮还是亮的,墨迹天气之类的软件根本杀不了,这些软件都干嘛的啊,还是我刷的CM系统有问题?

难道每天晚上睡觉前要到应用程序详细信息里面一个一个点击查看是否需要强制停止?为什么没有一个软件可以列出那些“强制停止”还是亮的应用列表,供用户选择哪些程序可以强制停止掉?

那就自己写个吧。

先看看这个“强制停止”里面做了什么。

usb连上手机,取出setting的apk文件:adb pull system/app/Settings.apk

解压apk,拿出dex,用dex2jar反编译,jdjui查看反编译源码。

找到InstalledAppDetails.java,有两个函数有用:

private void checkForceStop();//检查应用是否可以强制停止(其中里面有个判断packageHasActiveAdmins()后面再说)
private void forceStopPackage(String paramString);//强制停止应用

forceStopPackage调用了system隐藏的api函数((ActivityManager)getActivity().getSystemService("activity")).forceStopPackage(paramString);可惜这个函数作为第三方的应用程序不能用(打包时需要指定手机的签名)。

后来发现有个命令很有用,就是am。

am force-stop ***(应用程序包名)

当用户选择查杀某个应用时调用上面的命令有效,借鉴DroidWall的源码,让用户感觉不到上面命令的调用。

经过验证,“强制停止”以后,应用程序注册的BroadcastReceiver都将失效,包括BOOT_COMPLETED,RECEIVE_SMS等,开机自启,接收短信等都不再有用。

关于DeviceAdmin,网上介绍的很少,也很神秘,很多木马都是从这里开始的,后面再说吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐