[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");

好的,这篇文章到这里就结束了,如果有什么问题欢迎留言提出~

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