2017-03-29 49 views
1

我正在開發一個圖書館。我希望使用我的庫的應用程序能夠使用我的自定義操作通過隱式意圖啓動我的主要活動。但自定義意圖不起作用。它說「沒有發現處理意圖的活動='我的自定義行爲'」。下面是我的代碼:Android - 無法啓動圖書館項目的活動

Intent intent = new Intent(); 
intent.setAction("my.custom.action"); 
intent.addCategory("android.intent.category.DEFAULT"); 
intent.putExtra("foo","bar"); 
startActivity(intent); 

我一直在使用的包名獲得意圖也試過,但它沒有工作,要麼(雖然我不希望使用此方法,因爲我不想暴露我包名稱和組件)

Intent intent = getPackageManager().getLaunchIntentForPackage("com.happay.android.acslibrary"); 

最後我嘗試使用明確意圖:

Intent intent = new Intent(this,LibMainActivity.class); 
startActivity(intent); 

這沒有拋出異常,但沒開我的圖書館活動。它只是從我的主要項目中打開了相同的活動。 這裏是我的庫項目清單,其中註冊我的活動:

<activity android:name=".LibMainActivity"> 
     <intent-filter> 
      <action android:name="my.custom.action" /> 

      <category android:name="android.intent.category.DEFAULT" /> 

     </intent-filter> 
    </activity> 

我在做什麼錯?

回答

1

Intent中刪除類別,您將其傳遞給startActivity()。您將類別LAUNCHER添加到Intent,但您的<intent-filter>只包含類別DEFAULT。沒有匹配。按照documentation for matching Intents

分類匹配,如果所有的過濾器給出 類別的類別在Intent匹配。 不在Intent中的額外類別不會導致匹配失敗。請注意, 與動作不同,沒有類別的IntentFilter只會匹配 Intent,它沒有任何類別。

+0

發佈問題時發生錯誤。在代碼中,我使用相同的類別。我編輯了問題。 – Asu

+0

如果在註冊時沒有使用任何類別,那麼在文檔中也會寫入,不應該在意圖中使用類別。但沒有類別的應用程序崩潰。使用相同的類別,同樣的呼叫活動再次啓動。 – Asu