1. 程式人生 > >Android專案載入後圖標不顯示解決方案

Android專案載入後圖標不顯示解決方案

自己寫的程式突然安裝後圖標不見了,在應用程式安裝中能找到,但是桌面上就是沒有圖示,啟動只能從最近列表中其中。。一般這種情況只會在服務類程式和測試程式中出現,因為不需要圖示。

google無果,自己二分除錯解決了,並測試了其他網友提供的其他會出錯原因,大致總結如下:

1AndroidManifest中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程式碼
  1. <activityandroid:name=".AccountManageActivity"
    >
  2. <intent-filter>
  3. <actionandroid:name="android.intent.action.MAIN"/>
  4. <categoryandroid:name="android.intent.category.LAUNCHER"/>
  5. <dataandroid:scheme="aone"android:host="AccountManageActivity"/>
  6. </intent-filter>
  7. </activity>

有網友說這種方式無法啟動,但經過自己測試能啟動只是不會顯示圖示而已

解決方法:分為兩個intent-filter,如下

Xml程式碼
  1. <activityandroid:name=".AccountManageActivity">
  2. <intent-filter>
  3. <actionandroid:name="android.intent.action.MAIN"/>
  4. <categoryandroid:name="android.intent.category.LAUNCHER"/>
  5. </intent-filter>
  6. <intent-filter>
  7. <dataandroid:scheme="aone"android:host="AccountManageActivity"/>
  8. </intent-filter>
  9. </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