天天看點

Android 如何隐藏應用程式的圖示

在找到本文之前,你也許已經嘗試過諸如以下的解決方案:

1,androidmanifest.xml檔案中在入口activity的intent-filter裡去掉<category android:name=”android.intent.category.launcher” />,或者将launcher改為default

2,在程式中加入下面的代碼

顯示圖檔:

packagemanager p = getpackagemanager(); p.setcomponentenabledsetting(getcomponentname(), packagemanager.component_enabled_state_enabled, packagemanager.dont_kill_app); 隐藏圖示:

packagemanager p = getpackagemanager(); p.setcomponentenabledsetting(getcomponentname(), packagemanager.component_enabled_state_disabled, packagemanager.dont_kill_app);</blockquote>

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”中的資源啊,等等等等。。。

但是試過了每一種方法之後你都發現起到了作用但是卻産生了其他的問題

這裡先一個一個的解釋下,

如果去掉&lt;category android:name=”android.intent.category.launcher” /&gt;,就表示app沒有啟動入口了,這樣子确實是解決了不顯示圖示的效果,但是那樣的話我們的應用也運作不了了。頭疼~~~

第二種 ,我們來看看android developer 上的說明:

public static final int component_enabled_state_disabled

flag for <code>setapplicationenabledsetting(string, int, int)</code> and <code>setcomponentenabledsetting(componentname, int, int)</code>: 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中設定&lt;data&gt;&lt;/data&gt;元素。

比如:

&lt;data android:host=”authactivity” android:scheme=”com.android.example” /&gt;

注意,android:scheme是大小寫敏感的,必須以小寫字母開頭

也就是這個mainactivity可以響應uri為com.android.example://authactivity的特定 intent

但是為什麼加入這個之後app就不顯示圖示了呢?

因為我們把app的入口activity申明為由接收隐士的intent來啟動,這樣自然也就不會顯示圖示了。

好了,如果需要顯示圖示的話而且也必須響應上述uri的話,那麼我們可以在該activity中再加入一個intent-filter标簽,将data元素移到建立的标簽中。這樣應用既可以顯示圖示又可以響應特定的uri了。

參考文章:

http://developer.android.com/guide/topics/manifest/intent-filter-element.html

http://wikidroid.sinaapp.com/androidmanifest.xml_data

繼續閱讀