首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android Manifest 多 Intent-filter 區分啟動入口與內部調用

     編輯:程式設計綜合問答

問題

單一 `` 同時包含 `MAIN/LAUNCHER` 和自定義 Action,導致內部調用 `startActivity(new Intent("custom.action"))` 找不到組件或啟動異常。

正確寫法:分離兩個 intent-filter

<activity android:name=".MyActivity" ...>
    <!-- 1. 桌面啟動入口 -->
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

    <!-- 2. 內部調用入口 -->
    <intent-filter>
        <action android:name="com.package.name.MY_CUSTOM_ACTION" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

調用方式

// 方式一:Action 字符串
Intent intent = new Intent("com.package.name.MY_CUSTOM_ACTION");
startActivity(intent);

// 方式二:顯式 Class(推薦,無需 intent-filter)
Intent intent = new Intent(context, MyActivity.class);
startActivity(intent);

關鍵點

  • DEFAULT category **必須**加在第二個 filter,否則隱式 Intent 無法匹配。
  • 自定義 Action 命名建議包含包名前綴,避免衝突。
  • 同一 Activity 可擁有多個 ``,系統按優先級匹配。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved