如果你的应用需要隐藏图标,那么这篇文章接下来的段落对你可能有所帮助。
2015-04-01 15:22
337 查看
在找到本文之前,你也许已经尝试过诸如以下的解决方案:
1,AndroidManifest.xml文件中在入口Activity的intent-filter里去掉<category android:name=”android.intent.category.LAUNCHER” />,或者将LAUNCHER改为DEFAULT
2,在程序中加入下面的代码
显示图片:
隐藏图标:
PackageManager.COMPONENT_ENABLED_STATE_ENABLED //显示应用图标
PackageManager.COMPONENT_ENABLED_STATE_DISABLED //隐藏应用图标
我用这俩个值来显示和隐藏应用图标有问题,隐藏以后就无法在显示应用图标了,在设置里的所有应用里也找不到了;
PackageManager.COMPONENT_ENABLED_STATE_DEFAULT //显示应用图标
PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER // 隐藏应用图标
将参数值该成这两个值就没有问题了,建议使用这两个值,
3,去掉android:icon=”@drawable/ic_launcher”中的资源啊,等等等等。。。
但是试过了每一种方法之后你都发现起到了作用但是却产生了其他的问题
这里先一个一个的解释下,
如果去掉<category android:name=”android.intent.category.LAUNCHER” />,就表示app没有启动入口了,这样子确实是解决了不显示图标的效果,但是那样的话我们的应用也运行不了了。头疼~~~
第二种 ,我们来看看android developer 上的说明:
public static final int COMPONENT_ENABLED_STATE_DISABLED
Flag for
意思是,即使你在manifest中声明了这个component或application,当你设置为COMPONENT_ENABLED_STATE_DISABLED时,他们都是不可用的。也就是说,如果你在MainActivity中这样设置了,那么应用图标不会显示,应用也不会运行。
那么,这也是不可行的~~~
第三种就不说了,我觉得是狗急跳墙的做法。
———————————分割线—————————————
接下来我要说的这种方法可以隐藏图标,同是也可以正常启动运行。
在manifest的入口activity里面intent-filter中设置<data></data>元素。
比如:
<data android:host=”AuthActivity” android:scheme=”com.android.example” />
注意,android:scheme是大小写敏感的,必须以小写字母开头
也就是这个MainActivity可以响应Uri为com.android.example://AuthActivity的特定 Intent
但是为什么加入这个之后app就不显示图标了呢?
因为我们把app的入口Activity申明为由接收隐士的Intent来启动,这样自然也就不会显示图标了。
好了,如果需要显示图标的话而且也必须响应上述Uri的话,那么我们可以在该Activity中再加入一个intent-filter标签,将data元素移到新建的标签中。这样应用既可以显示图标又可以响应特定的Uri了
1,AndroidManifest.xml文件中在入口Activity的intent-filter里去掉<category android:name=”android.intent.category.LAUNCHER” />,或者将LAUNCHER改为DEFAULT
2,在程序中加入下面的代码
显示图片:
<ol class="linenums"><li class="L0"><span style="font-size:14px;"><span class="typ">PackageManager</span><span class="pln"> p </span><span class="pun">=</span><span class="pln"> getPackageManager</span><span class="pun">();</span><span class="pln"></span> </span></li><li class="L1"><span style="font-size:14px;"><span class="pln">p</span><span class="pun">.</span><span class="pln">setComponentEnabledSetting</span><span class="pun">(</span><span class="pln">getComponentName</span><span class="pun">(),</span><span class="pln"> </span><span class="typ">PackageManager</span><span class="pun">.</span><span class="pln">COMPONENT_ENABLED_STATE_ENABLED</span><span class="pun">,</span><span class="pln"> </span><span class="typ">PackageManager</span><span class="pun">.</span><span class="pln">DONT_KILL_APP</span><span class="pun">);</span></span></li></ol>
隐藏图标:
<ol class="linenums"><li class="L0"><span style="font-size:14px;"><span class="typ">PackageManager</span><span class="pln"> p </span><span class="pun">=</span><span class="pln"> getPackageManager</span><span class="pun">();</span><span class="pln"></span> </span></li><li class="L1"><span style="font-size:14px;"><span class="pln">p</span><span class="pun">.</span><span class="pln">setComponentEnabledSetting</span><span class="pun">(</span><span class="pln">getComponentName</span><span class="pun">(),</span><span class="pln"> </span><span class="typ">PackageManager</span><span class="pun">.</span><span class="pln">COMPONENT_ENABLED_STATE_DISABLED</span><span class="pun">,</span><span class="pln"> </span><span class="typ">PackageManager</span><span class="pun">.</span><span class="pln">DONT_KILL_APP</span><span class="pun">);</span></span></li></ol>
PackageManager.COMPONENT_ENABLED_STATE_ENABLED //显示应用图标
PackageManager.COMPONENT_ENABLED_STATE_DISABLED //隐藏应用图标
我用这俩个值来显示和隐藏应用图标有问题,隐藏以后就无法在显示应用图标了,在设置里的所有应用里也找不到了;
PackageManager.COMPONENT_ENABLED_STATE_DEFAULT //显示应用图标
PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER // 隐藏应用图标
将参数值该成这两个值就没有问题了,建议使用这两个值,
3,去掉android:icon=”@drawable/ic_launcher”中的资源啊,等等等等。。。
但是试过了每一种方法之后你都发现起到了作用但是却产生了其他的问题
这里先一个一个的解释下,
如果去掉<category android:name=”android.intent.category.LAUNCHER” />,就表示app没有启动入口了,这样子确实是解决了不显示图标的效果,但是那样的话我们的应用也运行不了了。头疼~~~
第二种 ,我们来看看android developer 上的说明:
public static final int COMPONENT_ENABLED_STATE_DISABLED
Flag for
setApplicationEnabledSetting(String, int, int)and
setComponentEnabledSetting(ComponentName, int, int): This component or application has been explicitly disabled, regardless of what it has specified in its manifest.
意思是,即使你在manifest中声明了这个component或application,当你设置为COMPONENT_ENABLED_STATE_DISABLED时,他们都是不可用的。也就是说,如果你在MainActivity中这样设置了,那么应用图标不会显示,应用也不会运行。
那么,这也是不可行的~~~
第三种就不说了,我觉得是狗急跳墙的做法。
———————————分割线—————————————
接下来我要说的这种方法可以隐藏图标,同是也可以正常启动运行。
在manifest的入口activity里面intent-filter中设置<data></data>元素。
比如:
<data android:host=”AuthActivity” android:scheme=”com.android.example” />
注意,android:scheme是大小写敏感的,必须以小写字母开头
也就是这个MainActivity可以响应Uri为com.android.example://AuthActivity的特定 Intent
但是为什么加入这个之后app就不显示图标了呢?
因为我们把app的入口Activity申明为由接收隐士的Intent来启动,这样自然也就不会显示图标了。
好了,如果需要显示图标的话而且也必须响应上述Uri的话,那么我们可以在该Activity中再加入一个intent-filter标签,将data元素移到新建的标签中。这样应用既可以显示图标又可以响应特定的Uri了
相关文章推荐
- 如果你发现能ping通外网 但是浏览器上不了网 那么这篇文章可能对你有帮助
- 告诉你,你的应用需要隐藏图标,你该怎么做
- 如果从起点到终点需要走十步,那么最累的时候可能实在三五步左右的时候 [转]
- 以下是我学vc++看的几篇文章:不是本人所写:如果作者有需要的话:请联系我
- 希望这篇文章对理解C#的对象模型有所帮助
- 手机应用换图标,真有那么大市场吗?
- 希望这篇文章对理解C#的对象模型有所帮助 【zz】
- Android隐藏应用图标
- jarsigner: 无法对 jar 进行签名: 时间戳颁发机构没有响应。 如果要从防火墙后面连接, 则可能需要指定 HTTP 代理。请为 jarsigner 提供以下选项
- 11.2 DL动态加载框架、隐藏自己应用图标
- 如果有一个工具可以帮助你将你的代码可视化,你需要吗?
- CSDN博客排名第一第二的人的文章,可能不是你真正需要的。
- 如果客户端提交的FQDN本服务器没有,那么禁止服务器会帮助客户端去查询
- Adapter 如果客户需要使用某个类的服务,而这项服务是这个类用一个不同的接口提供的,那么,可以使用适配器模式为客户提供一个期望的接口
- 如果你升级了 mac os 12 想要允许任何来源的应用那么就看过来吧
- xml不能里面的上下间隔问题 ,如果存在需要隐藏的项的时候 ,最好是在隐藏项加layout_marginBottom,而不用在下面那项加top
- 如何实现多个线程同步 (2013-11-10 12:07:24)转载▼ 标签: it 在编写一个类时,如果该类中的代码可能运行于多线程环境下,那么就要考虑同步的问题,Java实现线程同步的方法很多
- ios7.1以后,iphone上隐藏应用图标的方法
- 如果说菜谱类应用变现模式不清晰,那么更垂直的烘焙类食谱呢?