4

Android卸载监听之后访问后台或者弹出一个网页

 2 years ago
source link: http://www.androidchina.net/6602.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Android卸载监听之后访问后台或者弹出一个网页 – Android开发中文站
你的位置:Android开发中文站 > Android开发 > 开发进阶 > 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

直接导入就可以

怪兽123

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

转载请注明:Android开发中文站 » Android卸载监听之后访问后台或者弹出一个网页


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK