事件捕获

卸载Android app弹出浏览器的一种实现

◇◆丶佛笑我妖孽 提交于 2019-12-07 12:04:32
卸载Android应用程序时,经常会弹出网页,做些用户数据的调查统计。 Android是可以获取到其它应用被卸载掉这个事件,但是并不能获取自身被卸载这个事件。从纯粹的java层是没法实现的, 本文介绍一种方法来实现它。 原理 简单来说就是创建后台进程,监控文件夹的删除事件。比如说app的包名是com.myname.myapp,后台进程监控的文件夹就是/data/data/com.myname.myapp。如何监控文件夹被删除这一事件,主要用的是inotify系列函数,这在 jni中的进程通讯的另一种实现方式 有介绍。 注意点 后台进程只需要一个就行了,不需要多个的,之前我注意到企鹅的一款产品做这个功能时,后台启动了多个进程。如何实现?可以参考 Android JNI层确保只有一个进程的一个实现 ,提供一种思路。 几种重点测试情形:a. 清理app的数据 b.升级app c. 强制关闭app,然后重启app。 代码 github地址 uninstallWatcher 代码实现以及demo都有了,接口也已经封装好,判断后台进程是否唯一,有点过于简单, 欢迎完善代码 。 代码使用也很简单。 public class DemoApp extends Application{ @Override public void onCreate() { Log.i("UninstallDemoApp