

Android卸载监听之后访问后台或者弹出一个网页
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.

在我收到做这个卸载监听的操作的时候,其实我心里是拒绝的,但再拒绝也是没有用的,谁让你只是个猿猿,哈哈哈,下面我们来讲我这一次的辛酸经历:
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
Recommend
-
103
北京 - @toyuanx - 没玩之前我练吉他来着,然后大部分时间看小说,基本都是一个人的活动。玩了农药认识了比较多的人,打了三千多场了,一场平均按 20 分钟计算的话,时间也不少了。突然间不想玩了。
-
65
程序员 - @MuscleOf2016 -
-
16
在上个文章众筹案例中,每个参与者可以看到自己的参与的状态,创作者却没有办法查看所有参与者,这篇文章我们实现在合约中加入参与事件,后台通过监听参与事件记录所有的参与者。 需求背景 其实有二个办法实现查看所...
-
27
程序员 - @jeffh - 那么问题来了,有代替品可以拦截流氓软件这些行为吗,如篡改浏览器主页、强行加入开机自启。
-
13
1)AssetBundle中加载SpriteAtlas图集之后卸载异常 2)Shader相关问题 3)如何监听GameObject的localScale改变 4)项目中大量的字节文件的合并和热更新方案 5)一个关于相机的几何数学问题 这是第232篇UWA技术知识分享的...
-
7
Android本身并没有提供监听App的前后台切换操作的方法。最近看到一种简单巧妙的方法来监听前后台,这里分享记录一下。 一、Activity生命周期我们知道在Android中,两个Activity,分别为A和B。假设此时A在前台,当A启动B时,他们俩之间的生命周...
-
4
V2EX › JavaScript JS 有办法 remove 匿名监听吗?或者有什么歪路子能达到效果 yuejieyao · 6...
-
22
web3.js 或者web3.py 如何监听大单买入? web3.js 或者web3.py 如何监听大单买入?
-
5
V2EX › Android 原生 Android 11 之后,隐私权限和后台管理是否靠得住? 20160409 · 9 小...
-
7
V2EX › 宽带症候群 zero Tier 卸载之后依然残留进程联网
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK