卸载Android app弹出浏览器的一种实现
2019獨角獸企業重金招聘Python工程師標準>>>
????卸載Android應用程序時,經常會彈出網頁,做些用戶數據的調查統計。Android是可以獲取到其它應用被卸載掉這個事件,但是并不能獲取自身被卸載這個事件。從純粹的java層是沒法實現的,本文介紹一種方法來實現它。
原理
????簡單來說就是創建后臺進程,監控文件夾的刪除事件。比如說app的包名是com.myname.myapp,后臺進程監控的文件夾就是/data/data/com.myname.myapp。如何監控文件夾被刪除這一事件,主要用的是inotify系列函數,這在jni中的進程通訊的另一種實現方式?有介紹。
注意點
后臺進程只需要一個就行了,不需要多個的,之前我注意到企鵝的一款產品做這個功能時,后臺啟動了多個進程。如何實現?可以參考Android JNI層確保只有一個進程的一個實現,提供一種思路。
幾種重點測試情形: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
轉載于:https://my.oschina.net/u/1445604/blog/496907
總結
以上是生活随笔為你收集整理的卸载Android app弹出浏览器的一种实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VLAN基本通信原理
- 下一篇: Unity手机摇一摇