[Android]使用Linux命令實現隱藏顯示應用功能

以前一直在寫一個能夠隱藏應用的小程序,然後呢,在網上搜了許多教程…轉念一想,這種富有獨創性的技術怎麼可能共享在網上…於是自己總結了出來,供dalao們豐富眼界(唉唉)

獲取ROOT權限

咳咳,首先這個就不用說了吧,相信dalao們應該沒有問題的,電腦上的模擬器倒是有ROOT,然而手機上呢就不一定有了…大家可以嘗試用z4root或者Kingroot這一類的ROOT工具試試。

獲取了ROOT權限之後,我們該怎樣在程序中獲取這個權限呢?

Process pro=Runtime.getRuntime().exec("su");

按理來說,ROOT過後的設備都會有一個su的命令,然後呢通過Runtime獲取到的實例來執行這個命令,就可以獲取到一個進程Process,然後我們又怎樣鍵入命令呢?

首先,我們需要先使用這個Process創建出一個DataOutputStream實例,就叫它dos吧(怎麼這麼眼熟)

DataOutputStream dos=new DataOutputStream(pro.getOutputStream());

然後呢,我們就可以通過這個DataOutputStream執行命令了。

使用hide命令隱藏應用

dos.writeBytes("pm hide [應用包名]\n");

這個是linux提供的命令,pm是PackageManager的縮寫,即應用管理器,然後hide應該都懂吧…最後記得要用\n回車來執行命令。
按理來說這樣就應該成功了,然後記得把緩存區清空。

dos.flush();

那麼也可以舉一反三了,如果想再把這個軟件顯示出來,就可以使用以下命令。

dos.writeBytes("pm unhide [應用包名]\n");

但是這裏存在一個問題,使用pm hide命令隱藏了一個應用後,程序將無法讀取這個應用的詳細信息,比如名字,圖標等等,如果隱藏應用後再讀取會報錯。
那麼我們該如何在應用隱藏的情況下顯示它的信息呢?難不成要把圖標,名字等等全部保存下來?那也太麻煩了,下面介紹另一種隱藏應用的方式。

使用disable命令隱藏應用

這個可以理解吧,disable的意思是停用,其實就是停用某一個程序,在系統應用的設置界面裏面卸載按鈕也是停用。
停用命令的使用方法還是差不多的。

dos.writeBytes("pm disable [應用包名]\n");

通過這樣的方式同樣可以實現隱藏應用,並且也可以讀取應用的詳細信息,同時我們照樣可以將它顯示出來。只不過使用disable命令隱藏的應用在顯示時可能會出現一點問題,所以我們需要兩步將它顯示出來。

dos.writeBytes("pm disable-user [應用包名]\n");
dos.writeBytes("pm enable [應用包名]\n");

好的,這篇文章到這裏就結束了,如果有什麼問題歡迎留言提出~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章