360 手机卫士 Android 版是如何卸载360安全卫士做到在卸载完成后弹出一个网页的?

--注意--本答案是与同组Android开发人员中午闲聊时得出,仅供参考,方法或者已经过时等,更多信息还望各位Google。首先从Android弹出网页开始分析。在Android开发中,通过系统默认浏览器弹出网页是通过如下的代码来实现的:startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse("")));
那么也就是说,360手机卫士在卸载的过程中执行上述代码就可以达到所谓的弹出一个网页的效果。那么接下来的问题是它怎么知道自己被卸载了?我们知道,在卸载应用的时候,Android系统会发送一个系统广播,但是卸载的是你自己你就没办法收到这个广播(或者说来不及收到广播,那时不管是进程还是线程都会被kill掉),Android系统也没有给开发者一个在应用被卸载的时候做一些事情的权利。但是,我们可以通过监视Android系统输出的log来判断“自己是否正在被卸载”。这是目前就我个人所知最常用的办法。当你的应用(包括其他任何应用)被卸载时,Android系统的ActivityManager会打印出一行log,大概是:removing:你的包名。这个log是在应用卸载界面点击”确定“后的一瞬间输出的,这一瞬间虽然很短,但是足够正在被卸载的应用捕获到,当捕获的时候,调用上述代码就可以达到在卸载后弹出一个网页的效果了。这只是个人的一种思路,具体如何捕获系统Log请自行查阅资料。
360手机卫士不是用票数最多的答案所描述的方式做的。&br&因为READ_LOGS这个权限自API level 16以来就不给第三方app用了,但360手机卫士仍然能在用户卸载后弹出浏览器。。。!!&br&&a href=&///?target=http%3A///zealotrouge/p/3159772.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android应用如何监听自己是否被卸载及卸载反馈功能的实现(第二版)&i class=&icon-external&&&/i&&/a& 这里描述的方法应该是最靠谱的。简单说就是fork出来一个进程,在这个进程里通过inotify来监听应用数据所在的目录是否存在。
360手机卫士不是用票数最多的答案所描述的方式做的。因为READ_LOGS这个权限自API level 16以来就不给第三方app用了,但360手机卫士仍然能在用户卸载后弹出浏览器。。。!! 这里描述的方法…
蛋蛋,谁跑通过而且是通用的赶紧把代码贴出来,首先卸载的过程就是先停止package的进程然后再执行卸载,我弄了一下午都没见好用,自己进程监听这个根本是不现实的。再者这样监听下去那用户手机的电得耗的多快。不用在java层搞了不是不行就是效率不高。fork出来一个进程是正解,我们后面就是采取这个方式
蛋蛋,谁跑通过而且是通用的赶紧把代码贴出来,首先卸载的过程就是先停止package的进程然后再执行卸载,我弄了一下午都没见好用,自己进程监听这个根本是不现实的。再者这样监听下去那用户手机的电得耗的多快。不用在java层搞了不是不行就是效率不高。fork…
已有帐号?
无法登录?
社交帐号登录
Yet another craftsman

我要回帖

更多关于 怎么卸载360安全卫士 的文章

 

随机推荐