android应用卸载后的监听

来源:互联网 发布:发票二维码扫描软件 编辑:程序博客网 时间:2024/05/16 12:58

在我收到做这个卸载监听的操作的时候,其实我心里是拒绝的,但再拒绝也是没有用的,谁让你只是个猿猿,哈哈哈,下面我们来讲我这一次的辛酸经历:

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;}@Overridepublic 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")@Overridepublic 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();}@Overridepublic void onDestroy() {    for (SDCardListener listener : listenners) {        listener.stopWatching();    }}@Overridepublic IBinder onBind(Intent intent) {    return null;}}

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

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

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

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

直接导入就可以

0 0
原创粉丝点击