Here is what i encountered: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=me.waye.intentdemo.intent.action.WAYE_ACTION cat=[me.waye.intentdemo.intent.category.WAYE_CATEGORY] } 在學習隱式啓動Activity的時候遇到這個錯誤,用的書是李剛的瘋狂Android講義,書上沒有提到這個問題,經過看文檔發現了答案:
Android treats all implicit intents passed to
startActivity()
as if they contained at least one category: "
android.intent.category.DEFAULT
" (the
CATEGORY_DEFAULT
constant). Therefore, activities that are willing to receive implicit intents must include "
android.intent.category.DEFAULT
" in their intent filters. (Filters with "
android.intent.action.MAIN
" and "
android.intent.category.LAUNCHER
" settings are the exception. They mark activities that begin new tasks and that are represented on the launcher screen. They can include "
android.intent.category.DEFAULT
" in the list of categories, but don't need to.) See
Using intent matching, later, for more on these filters.)
能接受隱式Intent的Activity必須包含android.intent.category.DEFAULT,但LAUNCHER和MAIN例外,能夠不用加,也能夠加上但沒有這個必要。