文章来源:微信公众号  Android开发中文站

1,我用的广播,事实证明这货一点用都没有

2,第二个,在网上找的一些资料,fock出一个C线程,因为当时我用的是6.0的机子当的测试机,一点反应都没有,后来想是不是android版本的原因,于是乎下了一个4.2的模拟器,妈蛋,网页竟然弹出来了,我也就无语了,这让我如何去爱你

3,最后一个,想到了android里面的FileObserve,文件监听者,本文就是讲如何使用FileObserve

直接上代码

public class SDCardListener extends FileObserver {

private String path;

private final Context mContext;

private String url="http://www.baidu.com";

public SDCardListener(String parentpath, Context context) {

super(parentpath);

this.path= parentpath;

this.mContext = context;

}

@Override

public void onEvent(int event, String path) {

int action = event & FileObserver.ALL_EVENTS;

switch (action) {

case FileObserver.DELETE:

doPost();

break;

}

}

//应用卸载后打开一个网页的方法

protected void openBrowser() {

Uri uri = Uri.parse(url);

Intent intent = new Intent(Intent.ACTION_VIEW, uri);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

mContext.startActivity(intent);

}

/**

* 通过get方式提交,请求后台

* */

public void doPost(){

//获得用户的信息

try {

SharedPreferences sharedPreferences = mContext.getSharedPreferences("loginUser",

Activity.MODE_PRIVATE);

String userData = sharedPreferences.getString("loginJson", "");

Log.e("userData:", userData);

if (!userData.equals("")) {

JSONObject jsonObject = new JSONObject(userData);

String user_id = jsonObject.getString("user_id");

String httpurl=url+"?"+"user_id="+user_id;

OkHttpUtils.get()

.url(httpurl)

.build()

.execute(new StringCallback() {

@Override

public void onError(Call call, Exception e, int id) {

}

@Override

public void onResponse(String response, int id) {

}

});

}else {

return;

}

}catch(Exception e){

e.printStackTrace();

}

}}

public class UnInstallServer extends Service {

SDCardListener[] listenners;

@SuppressLint("SdCardPath")

@Override

public void onCreate() {

SDCardListener[] listenners = {

new SDCardListener("/data/data/com.lilei.uninstall", this),

new SDCardListener(Environment.getExternalStorageDirectory() + File.separator + "test.txt", this) };

this.listenners = listenners;

for (SDCardListener listener : listenners) {

listener.startWatching();

}

File file = new File(Environment.getExternalStorageDirectory() + File.separator + "test.txt");

if (file.exists())

file.delete();

}

@Override

public void onDestroy() {

for (SDCardListener listener : listenners) {

listener.stopWatching();

}

}

@Override

public IBinder onBind(Intent intent) {

return null;

}}

没错,只要这两个类,就可以监听到应用被卸载

这是在网上看到的一位作者写的代码,修改了一些,不过忘了地址了,在此感谢

注意:

1.在Manifest里面开启UnInstallServer这个服务,我是在进入应用的 第一个Activity里面初始化的,这个自己看着办

2.代码里用到了OkHttp访问后台,这里贴上地址http://pan.baidu.com/s/1eRQ780y

直接导入就可以

原文链接:http://www.jianshu.com/p/180b79b57b3f

更多相关文章

  1. Android(安卓)中实现在界面上右划返回上一个界面
  2. android在更新ADT以后报java.lang.NoClassDefFound的解决办法
  3. 【Android快捷开发笔记系列】——Data Binding
  4. Android开发之adb && 破解开屏图案 && 代码判断当前是否处于锁屏
  5. Android(安卓)启动另一个App/apk中的Activity实现代码
  6. Android(安卓)自定义动画 单个View平面位移以及一组View轮回旋转
  7. 关于eclipse中关联各版本Android.jar对应的源代码方法
  8. Android仿美团外卖点菜联动列表
  9. Android(安卓)日志管理

随机推荐

  1. Android开发指南-框架主题-资源和资产
  2. android 触摸事件、点击事件的区别
  3. 二、Android工程的编译过程
  4. Android中的Menu菜单小解
  5. 谷歌Android手机应用开发环境的搭建
  6. Android(安卓)进程和线程模型
  7. 用 Golang 开发 Android(安卓)应用(七)——
  8. 最近Android有点烦
  9. Android学习路线图
  10. 想抢先体验Android操作系统的魅力吗?那就