在我收到做這個卸載監(jiān)聽的操作的時候征椒,其實我心里是拒絕的娇哆,但再拒絕也是沒有用的,誰讓你只是個猿猿勃救,哈哈哈碍讨,下面我們來講我這一次的辛酸經(jīng)歷:
1,我用的廣播蒙秒,事實證明這貨一點用都沒有
2勃黍,第二個,在網(wǎng)上找的一些資料晕讲,fock出一個C線程覆获,因為當時我用的是6.0的機子當?shù)臏y試機,一點反應都沒有瓢省,后來想是不是android版本的原因弄息,于是乎下了一個4.2的模擬器,媽蛋勤婚,網(wǎng)頁竟然彈出來了摹量,我也就無語了,這讓我如何去愛你
3,最后一個缨称,想到了android里面的FileObserve凝果,文件監(jiān)聽者,本文就是講如何使用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;
}
}
//應用卸載后打開一個網(wǎng)頁的方法
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>
沒錯睦尽,只要這兩個類器净,就可以監(jiān)聽到應用被卸載
這是在網(wǎng)上看到的一位作者寫的代碼,修改了一些骂删,不過忘了地址了掌动,在此感謝
注意:
1.在Manifest里面開啟UnInstallServer這個服務四啰,我是在進入應用的 第一個Activity里面初始化的宁玫,這個自己看著辦
2.代碼里用到了OkHttp訪問后臺,這里貼上地址http://pan.baidu.com/s/1eRQ780y
直接導入就可以