Android如何隐藏桌面图标
来源:互联网 发布:海湾消防主机编程视频 编辑:程序博客网 时间:2024/05/01 08:55
1、背景介绍
好吧,变态的老板又不知道从哪里看到了这么一个需求:要把自己的应用隐藏起来,不让别人发现,然后,额,偷偷的干啥。
在使用Android手机的过程中,会出现一种情况,你的通知栏被占满了,你却不知道是哪个应用做的手脚;你的手机会莫名其妙的发送短信,当然你也不知道这个是哪个应用做的;再或者你的手机莫名其妙今天的流量用超了,额,你找了半天也不知道这应用在哪里。
于是乎,有些聪明的用户,开始打开设置---->应用程序---->正在运行。赫然看见一个没见过的应用在跑着,当然,这个时候那家伙对你还是客气的,若是直接换成了Google的小机器人,恐怕你要找好久才知道这做坏事的家伙究竟是谁。
2、代码实现
好吧,老板说这玩意赚钱,没办法,都是被逼的呀。怎么实现呢?先来一段java代码呗:
// 将app图标隐藏:PackageManager p = getPackageManager();p.setComponentEnabledSetting(getComponentName(),PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP);
嗯,没错,你用上面一段代码,在你的机器运行一下,你的图标就不见了。
什么?这个不是你想要的,额,你想要在程序安装的时候直接没有啊?因为用户不一定会点击你呢,额,这个,好吧,也是可以实现的。不过,这里需要在xml文件中实现了,怎么弄呢,请看代码:
<activity android:name=".MainActivity" android:excludeFromRecents="true" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>上面这段代码,主要是说的MainActivity中,如果你设置了launcher,那么就会显示一个图标,额,把它干掉行不行?
经过测试,发现是可以的。。。不知道这算不算是Android的漏洞,如果程序没有如下语句,程序依然可以运行
<category android:name="android.intent.category.LAUNCHER" />如果你想你的程序不要显示在Android的桌面上,那么你只需要去掉这行代码,OK,你安装应用的时候,是不会有图标显示的。
3、动态显示
好吧,不断变化的需求,变态的老板,得到这样的结果了,并不满意,他还想动态的显示,用户点击了,显示一下,做黑手的时候,不显示。
额,老板你逗我么????算了,一次性写完代码,不过动态显示代码,只能够在Java代码中使用逻辑控制了。不废话,代码如下:
// 将app图标隐藏:PackageManager p = getPackageManager();p.setComponentEnabledSetting(getComponentName(),PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP);// 将app图标显示:PackageManager p = getPackageManager();p.setComponentEnabledSetting(getComponentName(),PackageManager.COMPONENT_ENABLED_STATE_ENABLED,PackageManager.DONT_KILL_APP);/**控制图标显示和隐藏@param clazz@param enabled true:显示、 false:隐藏*/private void setComponentEnabled(Class<?> clazz, boolean enabled) {final ComponentName c = new ComponentName(this, clazz.getName());getPackageManager().setComponentEnabledSetting(c,enabled?PackageManager.COMPONENT_ENABLED_STATE_ENABLED:PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP)}
4、擦下屁股
哎呀,后来发现Android提供了一个最近程序显示的机制,如果是最近启动过的程序,那么会在最近程序中找到,额,怎么办呢?
实际上,如果我们退出了应用,程序只在后台运行,这里也是找不到的,可是,可是,老板要,就算程序运行过了,也不能找到痕迹。。。。U can U up 啊。妹的,唉,苦逼程序员,就是苦逼命啊,还是要找到解决方案才对。
通过分析,我们的程序运行之后会有记录,那么,是不是在程序退出的时候,删除记录就行了呢?嗯,思路可行。那么记录放在哪里呢?我们从什么地方去删除呢?好吧,不多说了,经过测试,以下代码可行:
@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();System.exit(0);}
这么简单?对,就是这么简单,实际上只是调用了System.exit(0);这段代码而已,这里是杀死这个线程。
OK,搞定,收工。
- Android如何隐藏桌面图标
- Android应用如何隐藏APP桌面图标
- android应用隐藏桌面图标
- Android隐藏app桌面图标
- android隐藏桌面图标
- 隐藏桌面图标
- 隐藏桌面图标
- Android Xposed模块动态隐藏桌面图标
- 如何修改Android系统内置的桌面图标
- 如何修改Android系统内置的桌面图标
- 隐藏所有桌面图标
- WINCE6隐藏桌面图标
- [Delphi]显示、隐藏桌面图标
- Centos隐藏桌面图标
- iOS隐藏桌面图标
- C#隐藏桌面图标
- Centos隐藏桌面图标
- wince隐藏任务栏与桌面图标
- CheckBoxList 无法通过js获取选中value值 - 解决方案
- cocos2dx lua tableview
- STM32F4教程从零开始0——从官网获取固件库
- vim配置文件
- ARM寄存器的7种工作模式
- Android如何隐藏桌面图标
- utf-8和Unicode转换
- 原始套接字SOCK_RAW
- stl : map 插入相同key组成的make_pair, 结果是插入不进去, 不是覆盖
- Json读取与应用
- JAVA类库LinkList的基本实现
- 缓冲运动-1-[解决1].html
- cocos2dx游戏优化方向
- 工作感悟