卸載Android app彈出瀏覽器的一種實現

來源:互聯網
上載者:User

標籤:

    卸載Android應用程式時,經常會彈出網頁,做些使用者資料的調查統計。Android是可以擷取到其它應用被卸載掉這個事件,但是並不能擷取自身被卸載這個事件。從純粹的java層是沒法實現的,本文介紹一種方法來實現它。


原理

    簡單來說就是建立後台進程,監控檔案夾的刪除事件。比如說app的包名是com.myname.myapp,後台進程監控的檔案夾就是/data/data/com.myname.myapp。如何監控檔案夾被刪除這一事件,主要用的是inotify系列函數,這在jni中的進程通訊的另一種實現方式 有介紹。


注意點

  1. 後台進程只需要一個就行了,不需要多個的,之前我注意到企鵝的一款產品做這個功能時,後台啟動了多個進程。如何??可以參考Android JNI層確保只有一個進程的一個實現,提供一種思路。

  2. 幾種重點測試情形:a. 清理app的資料  b.升級app   c. 強制關閉app,然後重啟app。


代碼

github地址 uninstallWatcher

代碼實現以及demo都有了,介面也已經封裝好,判斷後台進程是否唯一,有點過於簡單,歡迎完善代碼。

代碼使用也很簡單。

public class DemoApp extends Application{@Overridepublic void onCreate() {Log.i("UninstallDemoApp", "onCreate");       WatchDog.init2("com.bananachip.uninstall", "libwatchDog.so", WatchDog.getUserSerial(this), "http://www.baidu.com");super.onCreate();}}

程式員都看得懂,不做解釋。

我這個實現中,判斷進程是否存在做的比較簡單,僅僅是查詢進程名libwatchDog.so。使用時自己要改名。


如何編譯?

jni部分不是通過eclipse編譯的。

cd jni

ndk-build

rename.bat

使用eclipse運行demo


其它

1.  本文參考了其它部落格,不過部落格實現有不少問題。

2. 不是所有的android機型刪掉app之後都能彈出網頁,比如小米,紅米,這些機型會對後台進程進行額外的管理。


------------歡迎評頭品足

------------by jacksonke




卸載Android app彈出瀏覽器的一種實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.