Android專案載入後圖標不顯示解決方案
自己寫的程式突然安裝後圖標不見了,在應用程式安裝中能找到,但是桌面上就是沒有圖示,啟動只能從最近列表中其中。。一般這種情況只會在服務類程式和測試程式中出現,因為不需要圖示。
google無果,自己二分除錯解決了,並測試了其他網友提供的其他會出錯原因,大致總結如下:
1、AndroidManifest中application元素屬性設定問題
屬性設定錯誤
<application android:icon="@drawable/icon" android:label="@string/app_name">
設定圖示為icon,而上面的icon資原始檔不存在
解決方法:新增icon資原始檔
2、AndroidManifest中沒有activity設定android.intent.category.LAUNCHER category或
android.intent.action.MAIN action
AndroidManifest沒有任何activity設定了
<category android:name="android.intent.category.LAUNCHER" />
和<action android:name="android.intent.action.MAIN" />
在執行時候你會發現如下提示資訊,表示非同步執行
[2012-03-25 ……] No Launcher activity found!
[2012-03-25 ……] The launch will only sync the application package on the device!
而程式已經安裝在列表中,但並沒有圖示而且也沒有將android.intent.action.MAIN屬性的activity執行顯示在螢幕最前端。
解決方法:在主activity中新增這兩個屬性
關於這兩個屬性的意思更多請參考:
3、main intent-filter同時配置了不同種類的action和data,配置如下:
Xml程式碼- <activityandroid:name=".AccountManageActivity"
- <intent-filter>
- <actionandroid:name="android.intent.action.MAIN"/>
- <categoryandroid:name="android.intent.category.LAUNCHER"/>
- <dataandroid:scheme="aone"android:host="AccountManageActivity"/>
- </intent-filter>
- </activity>
有網友說這種方式無法啟動,但經過自己測試能啟動只是不會顯示圖示而已
解決方法:分為兩個intent-filter,如下
Xml程式碼- <activityandroid:name=".AccountManageActivity">
- <intent-filter>
- <actionandroid:name="android.intent.action.MAIN"/>
- <categoryandroid:name="android.intent.category.LAUNCHER"/>
- </intent-filter>
- <intent-filter>
- <dataandroid:scheme="aone"android:host="AccountManageActivity"/>
- </intent-filter>
- </activity>
原因為intent-filter表示activity接受怎樣的intent,定義在一個intent-filter中的條件必須都滿足才能按照該intent-filter啟動,否則按照其他intent-filter啟動。而以上明顯是兩類啟動方式,所以必須分開。通過這個介紹可以知道其他的action、category、data衝突也有可能導致這個問題
我本地是最後一個原因,除錯n久,因為最開始寫時沒加data,這個時候圖示已經建立,加完data之後圖示仍然在,只不過是第一個建立好的,所以一直沒發現,加了一些新功能原來的apk刪除後,突然發現沒圖示了,一直以為是新加功能造成的。。。
原文:http://blog.sina.com.cn/s/blog_8210745b010178ni.html