原 Manifest
<activity android:name=".ActivityA" ...>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity" /> <!-- 無 filter,不會作為啟動入口 -->
修正:將 filter 移至 MainActivity
<activity android:name=".MainActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ActivityA" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
說明
- **僅有一個** Activity 擁有 `MAIN` + `LAUNCHER`,即桌面圖標啟動入口。
- 其他內部 Activity 可聲明 `VIEW` + `DEFAULT` 供隱式調用,或**僅用顯式 Intent** (`new Intent(this, OtherActivity.class)`) 啟動,**無需任何 intent-filter**。
- 標籤 `android:label` 顯示在桌面圖標下。