1. 程式人生 > >安裝應用(APP) 不顯示圖示

安裝應用(APP) 不顯示圖示

PackageManager p = getPackageManager();
p.setComponentEnabledSetting(getComponentName(), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

PackageManager.COMPONENT_ENABLED_STATE_ENABLED //顯示應用圖示
PackageManager.COMPONENT_ENABLED_STATE_DISABLED //隱藏應用圖示
我用這倆個值來顯示和隱藏應用圖示有問題,隱藏以後就無法在顯示應用圖示了,在設定裡的所有應用裡也找不到了;
將引數值該成這兩個值就沒有問題了,建議使用這兩個值。

3、去掉android:icon=”@drawable/ic_launcher”中的資源啊,等等等等。。。

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

1、如果去掉,就表示app沒有啟動入口了,
這樣子確實是解決了不顯示圖示的效果,但是那樣的話我們的應用也執行不了了。

2、我們來看看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中這樣設定了,那麼應用圖示不會顯示,應用也不會執行。

3、就不說了,我覺得是狗急跳牆的做法。

最優的解決方案:
接下來我要說的這種方法可以隱藏圖示,同是也可以正常啟動執行。
在manifest的入口activity裡面intent-filter中設定元素。
比如:
<data android:host="”AuthActivity”"android:scheme="”com.android.example”"></data>


注意,android:scheme是大小寫敏感的,必須以小寫字母開頭
也就是這個MainActivity可以響應Uri為com.android.example://AuthActivity的特定 Intent
但是為什麼加入這個之後app就不顯示圖示了呢?
因為我們把app的入口Activity申明為由接收隱士的Intent來啟動,這樣自然也就不會顯示圖示了。
如果需要顯示圖示的話而且也必須響應上述Uri的話,那麼我們可以在該Activity中再加入一個intent-filter標籤,將data元素移到新建的標籤中。
這樣應用既可以顯示圖示又可以響應特定的Uri了。


本文轉自:https://www.2cto.com/kf/201501/370583.html