2
  1. 如果意圖過濾器要解析隱式意圖,那麼爲什麼MainActivity(這是啓動 應用程序時運行的第一個活動)具有意向過濾器?
  2. 誰發出暗示意圖?
  3. 如果發送的隱式意圖沒有正確的數據會怎麼樣?

回答

1
  1. 它有CATEGORY_LAUNCHER和ACTION_MAIN。 android.intent.action.MAIN表示此活動是應用程序的入口點,即啓動應用程序時,將創建此活動。 CATEGORY_LAUNCHER告訴您應該在頂層啓動器中顯示您的活動。

https://developer.android.com/reference/android/content/Intent.html#ACTION_MAIN

  • 啓動器發送隱式意圖它。這就是啓動器如何知道點擊打開哪個活動。

  • 如果您發送不正確的數據,它將不會打開您的活動。例如: 如果您嘗試僅在startActivity中使用隱式意圖來啓動主要活動,那麼它將不會啓動,因爲有CATEGORY_DEFAULT與它關聯。你需要添加一個intent_filter到你的活動來解決意圖。

  • 2

    那麼,系統如何知道哪項活動是主要活動?這不是名稱 - 系統不關心名稱。它的意圖過濾器的活動,說明它的主要活動。

    它也可以有其他意圖過濾器以任何其他方式啓動它,你可能想要的。例如,您可能有意圖過濾器通過深層鏈接啓動它。

    至於正確的數據 - 如果從應用程序列表或主屏幕啓動,它將不會有任何數據。它在應用程序的程序員上,以確保它可以做一些有意義的事情。

    +0

    1)明白了。 2)明白了,例如,如果用戶點擊網站中的地址,我們的地圖應用程序可以通過使用意圖過濾器開始。我的理解是否正確?我可以知道深層鏈接是什麼意思嗎? – user3705478

    +0

    移動的深層鏈接是當像http://example.com/myUrl這樣的網址在應用程序而不是網頁中打開活動時。 –

    +0

    默認意圖過濾器不會處理深層鏈接。爲此你需要創建一個獨立的intent過濾器。 –

    相關問題