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

    卸载Android应用程序时,常常会弹出网页,作些用户数据的调查统计。Android是能够获取到其它应用被卸载掉这个事件,可是并不能获取自身被卸载这个事件。从纯粹的java层是无法实现的,本文介绍一种方法来实现它。java


原理android

    简单来讲就是建立后台进程,监控文件夹的删除事件。好比说app的包名是com.myname.myapp,后台进程监控的文件夹就是/data/data/com.myname.myapp。如何监控文件夹被删除这一事件,主要用的是inotify系列函数,这在jni中的进程通信的另外一种实现方式 有介绍。git


注意点
程序员

  1. 后台进程只须要一个就好了,不须要多个的,以前我注意到企鹅的一款产品作这个功能时,后台启动了多个进程。如何实现?能够参考Android JNI层确保只有一个进程的一个实现,提供一种思路。github

  2. 几种重点测试情形:a. 清理app的数据  b.升级app   c. 强制关闭app,而后重启app。app


代码eclipse

github地址 uninstallWatcher
ide

代码实现以及demo都有了,接口也已经封装好,判断后台进程是否惟一,有点过于简单,欢迎完善代码函数

代码使用也很简单。测试

public class DemoApp extends Application{

	@Override
	public void onCreate() {
		Log.i("UninstallDemoApp", "onCreate");
       	WatchDog.init2("com.bananachip.uninstall", "libwatchDog.so", WatchDog.getUserSerial(this), "http://www.baidu.com");
		
		super.onCreate();
	}

}

程序员都看得懂,不作解释。

我这个实现中,判断进程是否存在作的比较简单,仅仅是查询进程名libwatchDog.so。使用时本身要更名。


如何编译?

jni部分不是经过eclipse编译的。

cd jni

ndk-build

rename.bat

使用eclipse运行demo


其它

1.  本文参考了其它博客,不过博客实现有很多问题。

2. 不是全部的android机型删掉app以后都能弹出网页,好比小米,红米,这些机型会对后台进程进行额外的管理。


------------欢迎评头品足

------------by jacksonke

相关文章
相关标签/搜索