美文网首页手机移动程序开发Android开发之路Android开发
Android卸载监听之后访问后台或者弹出一个网页

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

作者: 怪兽123 | 来源:发表于2017-03-02 17:20 被阅读0次

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

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

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

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

    直接上代码<code>

    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();
        }
    
    }}
    

    </code>

    <code>
    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;
    }}
    

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

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

    注意:
    1.在Manifest里面开启UnInstallServer这个服务,我是在进入应用的 第一个Activity里面初始化的,这个自己看着办
    2.代码里用到了OkHttp访问后台,这里贴上地址http://pan.baidu.com/s/1eRQ780y
    直接导入就可以

    相关文章

      网友评论

        本文标题:Android卸载监听之后访问后台或者弹出一个网页

        本文链接:https://www.haomeiwen.com/subject/rsrkgttx.html