2010-03-05 25 views
2

我試圖通過僅從其他應用程序中的活動指定其動作(自定義)在其意向過濾器中定義的動作來啓動活動。要啓動的活動是其應用程序的主要活動,因此已在其意向過濾器中設置爲動作和類別android.intent.action.MAIN & android.intent.category.LAUNCHER。現在根據意向和意圖過濾器的Android文檔,在這種情況下,我不需要指定DEFAULT類別。但做同樣的我我無法啓動該活動。無法使用隱式意圖啓動活動,僅指定動作

logcat中說,活動找不到......

我是曲解文本或有別的失蹤......?

代碼,用於調用活動

Intent i=new Intent(); 
i.setAction("android.AddressBookV4.firstActivity"); 
startActivity(i); 

活動的定義被稱爲manifest文件

<activity android:name=".AddressBook" 
      android:label="@string/app_name"> 
    <intent-filter> 
     <action android:name="android.AddressBookV4.firstActivity" /> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
</activity> 

回答

1

您需要的LAUNCHER類別添加到您的Intent,因爲<intent-filter>說,它匹配以下意圖(僞代碼):

((action IS "android.AddressBookV4.firstActivity") 
    OR (action IS "android.intent.action.MAIN")) 
    AND (category IS "android.intent.category.LAUNCHER") 
+0

但沒有類別的意圖應該已通過類別測試。也acc。以文檔爲目標對象中存在的默認類別時,在爲「主」操作設置活動的情況下,不需要提及類別爲「啓動器」。 – Amit 2010-03-07 08:48:25

+0

「但沒有任何類別的意圖應該通過類別測試」 - 不,它不會。你需要將'LAUNCHER'類別添加到你的'Intent'中。 – CommonsWare 2010-03-07 13:41:45