<activity android:name="APAct">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="URLAct">
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
答:
一個應用程式可以有多個Activity,每個Activity是同層級的,那麼在啟動程式時,最先啟動哪個Activity呢?有些程式可能需要顯示在程式列表裡,有些不需要。怎麼定義呢?android.intent.action.MAIN決定應用程式最先啟動的Activity ,是程式的入口android.intent.category.LAUNCHER決定應用程式是否顯示在程式列表裡.
因為你的程式可能有很多個activity只要xml設定檔中有這麼一個intent-filter,而且裡面有這個launcher,那麼這個activity就是點擊程式時最先啟動並執行那個activity。
現在你只有一個activity,那麼加不加就沒有關係了。用於模擬器啟動時設定為預設開啟為的activity
另注:
所謂Launcher,是指管理案頭的程式.Lanucher列表是指在案頭中顯示的應用的列表.
但是,我做了下檢驗,發現必須在
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
同時在的時候,該Acticity才能顯示在程式列表裡,WHY?
當我建立個AndroidProject時,只有一個HActivity,在Manifest中去掉<action>,得:
<activity android:name=".HActivity"
android:label="@string/app_name">
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
或者,去掉<category>時,
此時運行時,在控制台都發現,
紅字說明:本程式找不到可啟動並執行Activity,即是找不到程式的入口,因此雖然程式Install成功,且有LAUNCHER的Category,但是還是加載不了該activity,也無法在程式列表中顯示程式表徵圖(有表徵圖,就說明點擊該表徵圖就能運行該程式,即是有程式入口,程式可執行)。同理,在最上面的情況,由於URLAct這個Activity沒有入口,所以其不能單獨被執行,其表徵圖不能在程式列表中顯示。
如果有多個同級的Activity都有過濾器
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
則只有最前面的Activity的<action .....main>有效,啟動該程式時,執行的是該Activity。且在程式列表中有多個表徵圖,這些Activity都在程式列表中顯示,該Application有多個入口,執行不同的Activity,但是整個程式的主入口(整個程式最先啟動並執行那個activity)只有最先定義的那個Activity。
當改變作為主入口的那個<activity>裡的android:label屬性的值()使其與application 的android:label值不同,在程式列表中顯示的是<activity>中的label值。同理當<activity>裡android:icon的值與<application>值不同時,程式列表裡顯示的是該activity的表徵圖。也就是說程式列表的顯示的是activity,而不是application.(個人理解,急待高人點撥)不然在同一個application
中有多個launcher的activity時,在程式列表中將所有launcher的activity都顯示出來。只不過最先定義的那個activity為整個application的主入口