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

原理

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

注意点

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

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

代码

代码实现以及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

android jackson冲突,卸载Android app弹出浏览器的一种实现相关推荐

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

    2019独角兽企业重金招聘Python工程师标准>>> 卸载Android应用程序时,经常会弹出网页,做些用户数据的调查统计.Android是可以获取到其它应用被卸载掉这个事件,但是 ...

  2. android卸载弹出窗口,卸载Android app弹出浏览器的一种实现

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

  3. JavaScript实现弹出浏览器的三种提示框:提示信息框、确认框和输入文本框

    浏览器的三种提示框 1.alert()提示信息框 2.confirm()提示确认框 3.prompt()提示输入文本框 1.alert()提示信息框 效果图: 实现代码: <script> ...

  4. javascript弹出浏览器的三种提示框:提示信息框、确认框、输入文本框

    浏览器的三种提示框: alert()提示信息框 confirm()提示确认框 prompt()提示输入文本框 1.alert()提示信息框 效果: 实现代码: <script>alert( ...

  5. android 浮层菜单弹出,Android PopupWindow实现微信右上角的弹出菜单

    日常开发过程中对于PopupWindown的使用也是比较多的.这里给大家展示一下PopupWindow的使用. 修改activity_main.xml布局: xmlns:tools="htt ...

  6. Android自定义底部弹出窗-dialog(2种实现分析+源码)

    Android自定义底部弹出窗-dialog(2种实现分析+源码) 上线项目功能抽取,在项目开发中,我们会在许多地方会用到底部自定义弹窗,比如设置:个人账户退出,切换,照片的拍照或者相册的调出,或者一 ...

  7. android一天一次弹窗,Android自定义Toast,多次弹出时取消上次弹出,最后一次弹出为准...

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. Android的Toast用队列管理弹出的消息,这个自定义的Toast用于频繁弹出Toas ...

  8. Android监听系统输入法键盘弹出显示与隐藏事件

    Android监听系统输入法键盘弹出显示与隐藏事件 有时候需要监听Android系统输入法的弹出显示事件,比如:微信聊天时,不管你当前在聊天中的什么位置(上滑查看消息历史),每当你点击输入框时,都会自 ...

  9. android卸载按钮不能用了,不用ROOT 干掉Android里无法卸载的APP

    原标题:不用ROOT 干掉Android里无法卸载的APP 点击上方"电脑爱好者"关注我们 Android手机最让人不放心的是什么?没错,就是各种存在"潜规则" ...

最新文章

  1. 打开u盘时提示是否要将其格式化的提示
  2. python读取一个图像_从图像处理python的文件中读取多个图像
  3. python win32库与subprocess_依赖管理:Python2.7需要subprocess32
  4. 【ArcGIS风暴】GlobeLand30全球数据处理教程(批量投影转换、无效值处理、拼接)
  5. spring框架介绍_Spring框架介绍
  6. 《Python Cookbook 3rd》笔记(5.18):将文件描述符包装成文件对象
  7. 如何给自选股票分组_手把手教你看盘界面如何设置
  8. 重置 Winsock:初始化计算机网络环境
  9. oracle 尝试分配内存不足,ORA-04030: 在尝试分配...字节(...)时进程内存不足的原因分析解决方法...
  10. SuiteCRM-7.7.6 (Ubuntu 16.04)
  11. win7桌面右下角的小喇叭音量图标不见了怎么办
  12. 第三方支付分类方式综述
  13. 如果Mac苹果电脑关机关不了怎么办?
  14. 135编辑器图片裁切功能
  15. AirServer2022苹果安卓手机屏幕如何投影到电脑上面
  16. 深度学习之计算机视觉方向的知识结构
  17. 使用netterm连接linux虚拟机
  18. 计算机在开机后显示器在显示桌面,电脑开机后显示器黄灯怎么办
  19. FAQ(43): com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL sy
  20. 登录企业邮箱入口,查看你不知道的企业公共邮箱优惠

热门文章

  1. Unity ShoeBox Extract Sprites 到 Unity 格式
  2. 电子商务物流解决方案
  3. struts2单选_带Struts的动态单选按钮
  4. [Valkyrie网络测试仪-软件使用技巧] - Scheduler动作录制,定制打流过程(中途启停/调整带宽/使能部分流量)
  5. 公司名下北京车牌指标怎么找回?
  6. c语言编写一个能计算银行存款的小程序。
  7. 数据预处理(分享一波考试大题和填空题)
  8. LaTeX TIKZ画markov转移图(有限状态机FSM图)
  9. 外贸通:妹子利用亚马逊Order a FREE swatch免费拿全球样品的BUG!样品塞满屋子。
  10. 用python判断一个树是否为素数(质数)