360 手机卫士 Android 版是如何做到在卸载完成后弹出一个网页的?
2013-02-16 10:14
459 查看
转自:http://www.zhihu.com/question/20773194/answer/16136814
在Android开发中,通过系统默认浏览器弹出网页是通过如下的代码来实现的:
那么也就是说,360手机卫士在卸载的过程中执行上述代码就可以达到所谓的弹出一个网页的效果。那么接下来的问题是它怎么知道自己被卸载了?
我们知道,在卸载应用的时候,Android系统会发送一个系统广播,但是卸载的是你自己你就没办法收到这个广播(或者说来不及收到广播,那时不管是进程还是线程都会被kill掉),Android系统也没有给开发者一个在应用被卸载的时候做一些事情的权利。但是,我们可以通过监视Android系统输出的log来判断“自己是否正在被卸载”。
这是目前就我个人所知最常用的办法。当你的应用(包括其他任何应用)被卸载时,Android系统的ActivityManager会打印出一行log,大概是:removing:你的包名。这个log是在应用卸载界面点击”确定“后的一瞬间输出的,这一瞬间虽然很短,但是足够正在被卸载的应用捕获到,当捕获的时候,调用上述代码就可以达到在卸载后弹出一个网页的效果了。
这只是个人的一种思路,具体如何捕获系统Log请自行查阅资料。
刘帅
首先从Android弹出网页开始分析。在Android开发中,通过系统默认浏览器弹出网页是通过如下的代码来实现的:
startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.baidu.com")));
那么也就是说,360手机卫士在卸载的过程中执行上述代码就可以达到所谓的弹出一个网页的效果。那么接下来的问题是它怎么知道自己被卸载了?
我们知道,在卸载应用的时候,Android系统会发送一个系统广播,但是卸载的是你自己你就没办法收到这个广播(或者说来不及收到广播,那时不管是进程还是线程都会被kill掉),Android系统也没有给开发者一个在应用被卸载的时候做一些事情的权利。但是,我们可以通过监视Android系统输出的log来判断“自己是否正在被卸载”。
这是目前就我个人所知最常用的办法。当你的应用(包括其他任何应用)被卸载时,Android系统的ActivityManager会打印出一行log,大概是:removing:你的包名。这个log是在应用卸载界面点击”确定“后的一瞬间输出的,这一瞬间虽然很短,但是足够正在被卸载的应用捕获到,当捕获的时候,调用上述代码就可以达到在卸载后弹出一个网页的效果了。
这只是个人的一种思路,具体如何捕获系统Log请自行查阅资料。
相关文章推荐
- Android卸载监听之后访问后台或者弹出一个网页
- Android项目实战--手机卫士22--卸载和分享功能的完成以及用户及系统应用的切换
- [置顶] Android 如何做到隐藏手机底部虚拟按键?
- Android 如何做到隐藏手机底部虚拟按键?
- android:如果手机安装了app则打开一个activity,如果没有安装则去到android market如何在HTML页面实现
- (三十一)工具方法:获得应用程序包名/安装apk/如何获得当前栈顶的Activity/android如何实现点击一个按钮进入指定网页
- 网页如何做到适应在手机上浏览
- Android 编程下 WebView 加载一个网页如何得到网页的 Cookie 值
- [经典技巧]android 如何监听输入法是否弹出或隐藏,监听手机是否是全屏切换
- Android核心基础(手机卫士的一个知识点总结)
- 这个开源项目展示了如何实现一个横跨各种Android平台的音乐播放器,包括手机,平板,汽车,手表,电视等。Google官方推出,跨平台开发必看项目。
- Android 如何监听返回键,例如要求弹出一个退出对话框
- [转]当用webBrowser1加载网页的时候,网页中出现js错误,会弹出一个提示,如何屏蔽不提示?
- 手机网页在弹出输入法时候挡住输入框?网上找了很多很多 终于找到一个真真可以用的了~
- Android 如何监听返回键,弹出一个退出对话框
- 如何利用Activity的Dialog风格完成弹出框设计 “第二届 Google 暑期大学生博客分享大赛 - 2011 Android 成长篇 ”
- Android中在用户登录时如何识别是否是一个正确的手机号码
- 如何在WebBrowser打开的网页链接后直接在WebBrowser打开而不是新弹出一个IE窗口来打开
- Android 如何监听返回键,弹出一个退出对话框
- Android仿360桌面手机卫士悬浮窗效果